//+------------------------------------------------------------------+ //| Year_70_Percents.mq4 | //| Copyright © 2010, "more" | //| "mailto:tradertobe@gmail.com | //+------------------------------------------------------------------+ //ВСЕ ОЧЕНЬ ПРОСТО: ОТКРЫТИЕ ПЕРВОЙ ПОЗИЦИИ ПРОИЗВОДИТСЯ НА НУЛЕВОМ БАРЕ ПРИ ПРОБОЕ ТЕКУЩЕГО ФРАКТАЛА ВЫШЕ ЗУБОВ АЛЛИГАТОРА. // ДОПОЛНИТЕЛЬНЫЕ ПОЗИЦИИ В НАПРАВЛЕНИЕ ПЕРВОЙ ПОЗИЦИИ ОТКРЫВАЮТСЯ НА НУЛЕВОМ БАРЕ ПРИ ПРОБОЕ ТЕКУЩЕГО ФРАКТАЛА // ВЫШЕ ЗУБОВ АЛЛИГАТОРА, НО ЛИШЬ ПРИ УСЛОВИИ, ЕСЛИ ВСЕ ТРИ ЛИНИИ АЛЛИГАТОРА ВЫСТРОИЛИСЬ В ТРЕНД НА НУЛЕВОМ БАРЕ. // ЗАКРЫТИЕ ВСЕХ ПОЗИЦИЙ ПРИОИЗВОДИТСЯ ПРИ ВОЗНИКНОВЕНИЕ НУЛЕВОГО БАРА ПРИ УСЛОВИЕ, КОГДА ЗАКРЫТИЕ ПЕРВОГО БАРА // ПРОИЗОШЛО ЗА ПРЕДЕЛАМИ ГУБ/ЗУБОВ/ЧЕЛЮСТИ (ЗАДАЕТСЯ ВНЕШНИМ ПАРАМЕТРОМ) АЛЛИГАТОРА. // Остальная ответственность за Мартингейлом // Delta, TakeProfit, StopLoss ,Stop_0 и Distance заданы для 4-х разрядных котировок, если котировки 5-ти разрядные, то программа сама это обнаруживает // и умножает заданные величины на 10. #property copyright "more" #property link "mailto:tradertobe@gmail.com" #include #include #include //-- /* #include #include #include #include #include #include #include #include #include #include #include #include #include #include */ #include "Rest.mq4" //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { // SetSignalesBuyStopSellStop(); //---- AllOrdersInit(MagicNumber); SetSignalesMarti(BUY_Sign, BUY_Stop, SELL_Sign, SELL_Stop, LastBar, bar2, bar1, bar0 ); // SetSignales(BUY_Sign, BUY_Stop, SELL_Sign, SELL_Stop, LastBar, bar2, bar1, bar0 ); if (OrdersOpen(BUY_Sign, SELL_Sign)) return(0); AllOrdersInit(MagicNumber); if (OrdersClose(BUY_Stop, SELL_Stop ) ) return(0); AllOrdersInit(MagicNumber); GetZeroTargetLines(); if (OrdersModify()) return(0); //---- return(0); // возвращаем управление терминалу } // end of int start() //************************************************************************************************************************** //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- if (Digits == 5 ||Digits == 3 ) { Delta *=10; TakeProfit *=10; StopLoss *=10; Stop_0 *=10; Distance *=10; } LastBar = 0; TicValue = MarketInfo(Symbol(),MODE_TICKVALUE); // Проверим правильность заданий внешних параметров работы советника bool parmserrors = false; i = 0; if (CloseAllonLIPS) i++; if (CloseAllonTEETH) i++; if (CloseAllonJAW) i++; if (i != 1) {Print(CloseParmErrorMes); parmserrors = true;} // // Проверим правильность задания параметра принудительного закрытия всех позиций // if (CloseForced) {Print(CloseForcedParmErrorMes); parmserrors = true;} //---- // Проверим правильность задания параметров торговли в одну сторону - OpenBuyOnly OpenSellOnly if (OpenBuyOnly && OpenSellOnly) {Print(OnlyTradeParmErrorMes); parmserrors = true;} //--- // Если Stop_0 = 0, то никаких действий по переносу StopLoss-уровня в безубыток не производим. // Проверим правильность задания параметров Stop_0 и Stop_0_Zero - только один из этих параметров может быть отличным от нуля if (Stop_0 != 0 && Stop_0_Zero != 0) {Print(Stop_0Stop_0_ZeroParmErrorMes); parmserrors = true;} //--- if (parmserrors) {TradeAllowed = false; PlaySound("alert.wav"); Print(ParmsErrorsMes);} else if (TradeAllowed) {PlaySound("ok.wav"); Print(ParmsOKReadyMes);} else {PlaySound("ok.wav"); Print(ParmsOKNotReadyMes);} //--- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("FractalUpper"); ObjectDelete("FractalLower"); ObjectDelete("ZeroPrice"); ObjectDelete("ProfitTargetPrice"); //---- return(0); }