//+------------------------------------------------------------------+//| Exp_CandlesticksBW.mq5 |//| Copyright © 2016, Nikolay Kositsin |//| Khabarovsk, farria@mail.redcom.ru |//+------------------------------------------------------------------+#property copyright "Copyright © 2016, Nikolay Kositsin"#property link "farria@mail.redcom.ru"versão #property "1.00"//+----------------------------------------------+//| Algoritmos de negociação |//+----------------------------------------------+#include //+----------------------------------------------+//| Parâmetros de conselheiro perito de entrada |//+----------------------------------------------+entrada dupla MM = 0,1; A proporção de recursos financeiros da transação de depósitoMarginMode MMMode de entrada = muito; Como determinar o tamanho do loteentrada int StopLoss_ = 1000; Parar a perda de pontosentrada int TakeProfit_ = 2000; tirar lucro em pontosentrada int Deviation_ = 10; Max. desvio em parágrafosentrada bool BuyPosOpen = true; Permissão para fazer logon em longoentrada bool SellPosOpen = true; Permissão para entrar em resumoentrada bool BuyPosClose = true; Permissão para sair águaentrada bool SellPosClose = true; Permissão para sair de Bermuda//+----------------------------------------------+//| Os parâmetros de entrada do indicador |//+----------------------------------------------+entrada ENUM_TIMEFRAMES InpInd_Timeframe = PERIOD_H4; indicador de período de tempo CandlesticksBWComprimento de entrada uint = 2;a enumeração de ENUM_MA_METHOD MAType de entrada = MODE_SMA;uint SignalBar de entrada = 1; bar número para obter o sinal de entrada//+----------------------------------------------+int TimeShiftSec;---ОБЪЯВЛЕНИЕ ЦЕЛЫХ ПЕРЕМЕННЫХ ДЛЯ ХЕНДЛОВ ИНДИКАТОРОВint InpInd_Handle;---ОБЪЯВЛЕНИЕ ЦЕЛЫХ ПЕРЕМЕННЫХ НАЧАЛА ОТСЧЕТА ДАННЫХint min_rates_total;//+------------------------------------------------------------------+//| Função de inicialização perito |//+------------------------------------------------------------------+int OnInit() {---Получение хендла индикатора CandlesticksBW InpInd_Handle=iCustom(Symbol(),InpInd_Timeframe,"CandlesticksBW",Length,MAType,0); If(InpInd_Handle==INVALID_HANDLE) { Impressão ("Не удалось получить хендл индикатора CandlesticksBW"); Return(INIT_FAILED); }---ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННОЙ ДЛЯ ХРАНЕНИЯ ПЕРИОДА ГРАФИКА В СЕКУНДАХ TimeShiftSec=PeriodSeconds(InpInd_Timeframe);---ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ НАЧАЛА ОТСЧЁТА ДАННЫХ min_rates_total = 34 + 2; min_rates_total + = int(3+SignalBar);---ЗАВЕРШЕНИЕ ИНИЦИАЛИЗАЦИИ Return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Função de especialista em finalização |//+------------------------------------------------------------------+void OnDeinit (const int razão) {//---- GlobalVariableDel_(Symbol());//---- }//+------------------------------------------------------------------+//| Função de perito carrapato |//+------------------------------------------------------------------+void OnTick {---ПРОВЕРКА КОЛИЧЕСТВА БАРОВ НА ДОСТАТОЧНОСТЬ ДЛЯ РАСЧЁТА If(BarsCalculated(InpInd_Handle)---Подгрузка истории для нормальной работы функций IsNewBar() и SeriesInfoInteger() LoadHistory(TimeCurrent()-PeriodSeconds(InpInd_Timeframe)-1,Symbol(),InpInd_Timeframe);---ОБЪЯВЛЕНИЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ Double valor [2];---ОБЪЯВЛЕНИЕ СТАТИЧЕСКИХ ПЕРЕМЕННЫХ bool estático recontagem = true; estática bool BUY_Open = false, BUY_Close = false; estática bool SELL_Open = false, SELL_Close = false; métodos estáticos datetime UpSignalTime, DnSignalTime; estático CIsNewBar NB;//+----------------------------------------------+//| ОПРЕДЕЛЕНИЕ СИГНАЛОВ ДЛЯ СДЕЛОК |//+----------------------------------------------+ If (!. SignalBar | | NB. IsNewBar(Symbol(),InpInd_Timeframe) | | Recontagem) / / проверка на появление нового бара { ---ОБНУЛИМ ТОРГОВЫЕ СИГНАЛЫ BUY_Open = false; SELL_Open = false; BUY_Close = false; SELL_Close = false; Recontar = false; ---КОПИРУЕМ ВНОВЬ ПОЯВИВШИЕСЯ ДАННЫЕ В МАССИВЫ If(CopyBuffer(InpInd_Handle,4,SignalBar,2,value) < = 0) {recontar = true; return;} ---ПОЛУЧИМ СИГНАЛЫ ДЛЯ ПОКУПКИ se (valor [1] < 2). { If(BuyPosOpen) se (valor [0] > 1) BUY_Open = true; If(SellPosClose) SELL_Close = true; UpSignalTime=datetime(SeriesInfoInteger(Symbol(),InpInd_Timeframe,SERIES_LASTBAR_DATE)) + TimeShiftSec; } ---ПОЛУЧИМ СИГНАЛЫ ДЛЯ ПРОДАЖИ se (valor [1] > 3) { If(SellPosOpen) se (valor [0] < 4) SELL_Open = true; If(BuyPosClose) BUY_Close = true; DnSignalTime
sendo traduzido, aguarde..