Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
exp_Lego_4_Beta
//+-------------------------------------------------------------------+
//| Build_Own_Strategy!.mq4 |
//| © 2007 v0 - AutoGrapf.dp.ua | // It was shared for MQL4 book. So, there are no any reserved copyrights except open source since beginning.
//| v1 2010 Seletsky R.V. aka Romari | // Also shared on MQL4.com . R is for Roman... I guess.
//| v2,v3 - by 26_994 | // All are shared.
//| v4 2011 Yakov Gloodun aka 26_994 |// Yes, it's my name. And sorry me for my English - my mother teaches it.
//+-------------------------------------------------------------------+
//-----------------------------------------------------------------------------------------------------------+
// Èíñòðóêöèÿ ïî ïðèìåíåíèþ - â êîäå |
//-----------------Paramethers--------------------------------------------------------------------- 1 -------+
// Íîâè÷êàì - ëó÷øå ïîïðîáóéòå äîñòàòü íà MQL4.com ÷òî-íèáóäü ñ ðåéòèíãîì "10.0" èç ãîòîâûõ ñîâåòíèêîâ (ñàìûå êîììåíòèðóåìûå! ÷òîáû ãàðàíòèÿ)
extern string Instructsia = "...çäåñü è âíóòðè";
extern string ShiftTunes = "Øèôò (áàð). Íà âñå èíäèêàòîðû, êðîìå 2ÌÀ è ïîëüçîâàòåëüñêèõ";
extern double GeneralShift = 0; // 0 - íåçàêðûòûé áàð, 1 - çàêðûòûé.
extern string Implemented_Indicators = "Çàâîäñêèå èíäèêàòîðû. 12 øòóê. Ïðîíóìåðîâàíû";
extern string WARNING1 = "ÑÂÎÉÑÒÂÀ ÈÍÄÈÊÀÒÎÐÀ ÍÀÑÒÐÀÈÂÀÞÒÑß Â ÊÎÍÑÎËÈ";
extern string WARNING2 = "ÓÁÅÄÈÒÅÑÜ, ×ÒÎ ÈÍÄÈÊÀÒÎÐÛ ÏÎÑÒÀÂËÅÍÛ ÏÐÀÂÈËÜÍÎ,";
extern string WARNING3 = "ÈÍÀ×Å ÑÒÐÀÒÅÃÈß ÁÓÄÅÒ ÈÑÏÎÐ×ÅÍÀ";
extern string Note_Âñåì = " Êîíñîëü òðåáóåò íåáîëüøîãî êîäåðñêîãî ÷óòüÿ èëè ÷üåé-òî ïîìîùè";
extern string The_List_Of = " ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----";
extern string Indicators1 = " Òðåíäîâûå èíäèêàòîðû îòñåèâàþò øóìû! Ìåæäó âõîäîì è îæèäàíèåì! ";
extern string Indicators2 = " Îñöèëëÿòîðû - âûáèðàþò ìåæäó ïîêóïêîé èëè ïðîäàæåé! ";
extern string Indicators3 = " Òðåíäîâûå ËÎÂßÒ ÑÈËÓ - Îñöèëëÿòîðû ÂÛÁÈÐÀÞÒ ÏÓÒÜ. ";
extern string Indicators4 = " ";
extern string Indicator_1 = "2MA (MACD 0-line-mode æå)";
extern bool otkr_MA =false;
extern bool zakr_MA =false; // Ïåðåñå÷åíèå _äâóõ_ ñêîëüçÿùèõ. Ïðÿìî êàê MACD-"íóëåâàÿ ëèíèÿ".
extern double MA1 =4;
extern double MA2 =67;
extern double Shift_1 =1; // Øèôò - ýòî áàð, íà êîòîðûé îïèðàåòñÿ ñîâåòíèê. 1 - ñâåæåçàêðûâøèéñÿ, 0 - òåêóùèé, 3 - òðè ñâå÷è íàçàä...
extern double Shift_2 =1;
extern double MA_type =1; //0 - Simple, 1 - Expotential, 2 - Smoothed, 3 - Linear Weighed. Most people are using EMA.
extern string Indicator_2 = "Êëàññèêà - Ñòîõàñòè÷åñêèé Îñöèëëÿòîð.";
extern bool otkr_Stoh =false;//
extern bool zakr_Stoh =false;
extern double per_K=5;
extern double per_D=3;
extern double slow=3;
extern double zoneBUY=20;
extern double zoneSELL=80; //Ñòàðàÿ òåìà - íèêòî íå ëþáèò íàñòðàèâàòü óðîâíè ïî îòäåëüíîñòè.
extern string Indicator_3 = "---- Awesome (std) ----"; // Îçíà÷àåò std, ðàçóìååòñÿ, standard. Ýòî îçíà÷àåò, ÷òî èíäèêàòîð... íå íàñòðàèâàëñÿ âàìè. Ïîìåòêà. Ìåíÿ â ïëàíå âûêëàäûâàíèÿ êóñêîâ êîäà ìîæåòå íå æäàòü.
extern bool otkr_AO =false;
extern bool zakr_AO =false;
extern string StdDev = "--- StdDev (std) ----"; //Òî æå ñàìîå, ÷òî è ïîëîñû Áîëëèíäæåðà - òîëüêî â îòä. îêíå.
extern bool otkr_StdDev=false;
extern bool zakr_StdDev=false;
extern double StdDevMAPeriod =14;
extern double StdDevMAShift =0;
extern double StdDevLimitToOpen =0.0025;
extern double StdDevLimitToClose =0.0025;// Íåáîëüøîé òðþê - âû ìîæåòå ïîñòàâèòü ToClose âûøå, ÷åì ToOpen.
extern string Indicator_4 = "---- Demarker (std) ---- ";
extern bool otkr_Dema =false;
extern bool zakr_Dema =false;
extern double DeMa_period=14;
extern double niz_ur=0.3;
extern double verx_ur=0.7;
extern string Indicator_5 = "---- CCI (std) ---- ";
extern bool otkr_CCI =false;
extern bool zakr_CCI =false;
extern double CCI_period=14;
extern double CCI_Level=100; // What, if we want 95?
extern string Indicator_6 = "---- RSI (std) ----";
extern bool otkr_RSI =false;
extern bool zakr_RSI =false;
extern double RSI_Period =14;
extern double RSI_High=70;
extern double RSI_Low=30;
extern string Indicator_7 = "---- MACD (std) ---- ";
extern bool otkr_MACD =false;
extern bool zakr_MACD =false;
extern double MACD_Fast=9;
extern double MACD_Slow=26; // MACD uses SIGNAL line
extern double MACD_Signal=14; // because you have 2 MA Cross system
extern string Indicator_8 = "---- OsMA (std) ---- ";
extern bool otkr_OsMA =false;
extern bool zakr_OsMA =false;
extern double OsMA_Fast=9;
extern double OsMA_Slow=26; // SIGNAL line (Well, you can also try Zignal.com as a platform - expenseful lux look is a sort of guaranty. Yes, I've made an ad here - Anon MMMMMMMMMI)
extern double OsMA_Signal=14; // because you have 2 MA Cross system
extern string Indicator_9 = "---- WPR aka %R (std) ---- ";//Williams Percent Range
extern bool otkr_WPR = false;
extern bool zakr_WPR = false;
extern double WPR_Period = 14;
extern string Indicator_10 = "---- MFI (std) ---- ";
extern bool otkr_MFI = false;
extern bool zakr_MFI = false;
extern double MFI_Period=14;
extern double MFI_High =70;
extern double MFI_Low =30;
extern string Indicator_11 = "---- ADX (std) ----"; //Main Line 30/70
extern bool otkr_ADX = false;
extern bool zakr_ADX = false;
extern double ADX_Period=14;
extern string Indicator_12 = "---- SAR (std) ---- ";
extern bool otkr_SAR = false;
extern bool zakr_SAR = false;
extern double SAR_Step =0.02;
extern double SAR_MaxStep =0.2;
extern string Custom_Indicator_û_0 = " __________________ ";
extern string Custom_Indicator_û_1 = "Ïîëüçîâàòåëüñêèå èíäèêàòîðû";
extern string Custom_Indicator_û_2 = "Ïðåäïîëàãàåòñÿ, ÷òî îíè íàñòðîåíû ÷åðåç ðåäàêòèðîâíàèå êîäà.";
extern string Custom_Indicator_û_3 = "Âñ¸ ïðîñòî - ìåíÿåòå Name_X íà íàçâàíèå ñâîåãî èíäèêàòîðà";
extern string Custom_Indicator_û_4 = " ";
extern string IndName1 = "Name1";
extern bool otkr_Custom_1 = false;
extern bool zakr_Custom_1 = false;
extern double Shift1 =0;
extern string IndName2 = "Name2";
extern bool otkr_Custom_2 = false;
extern bool zakr_Custom_2 = false;
extern double Shift2 =0;
extern string IndName3 = "ZigZag - òåïåðü ïîíÿòíî, êàê?"; // Ïîíÿòíî êàê? :)
extern bool otkr_Custom_3 = false;
extern bool zakr_Custom_3 = false;
extern double Shift3 =0;
extern string IndName4 = "Name4";
extern bool otkr_Custom_4 = false;
extern bool zakr_Custom_4 = false;
extern double Shift4 =0;
extern string IndName5 = "Name5";
extern bool otkr_Custom_5 = false;
extern bool zakr_Custom_5 = false;
extern double Shift5 =0;
extern string IndName6 = "Name6";
extern bool otkr_Custom_6 = false;
extern bool zakr_Custom_6 = false;
extern double Shift6 =0;
extern string IndName7 = "Name7";
extern bool otkr_Custom_7 = false;
extern bool zakr_Custom_7 = false;
extern double Shift7 =0;
extern string IndName8 = "Name8";
extern bool otkr_Custom_8 = false;
extern bool zakr_Custom_8 = false;
extern double Shift8 =0;
extern string Void1 = " ";
extern string Void2 = " ";
extern string __Non_Indicator__AKA__ = "...çäåñü è âíóòðè";
extern string __Îáùèå_Ïàðàìåòðû__ = "---- __Îáùèå_Ïàðàìåòðû__ ---- ";
extern double StopLoss =100;
extern double TakeProfit =994; // ÒakeÐrofit íå ìîæåò áûòü íå èñïîëüçîâàí :)
extern double Slippage = 2; // Slippage. Ïðîñêàëüçûâàíèå.
extern string ID_of_EA = "Îíî æå MagicNumber, îíî æå íîìåðíîé çíàê";
extern double __ID_of_EA = 219249; // ZIGZAG æå. "Çàâîäñêîé èäåíòèôèêàòîð"
extern string Block_of_Stakes = "---- Stake tuning ----";
extern string Bl_1 = "1 - FixLot, 2 - Martigail, 3 - Percental";
extern string Bl_2 = "Ìàðòèí-à æä¸ò íîâîé ñäåëêè, à íå ïåðåáèâàåò ñòàðóþ";
extern string Bl_3 = "IK is a miltiplies for Martingail-taktic. Normally=2";
extern double StakeMode =1; //
extern double Lts1 =0.1; // Fixlot
extern double IK =2; // Multiplying Lts1 * IK (if the previous deal was fail). Normally, Martingail is ThisDealLots = PrevDealLots * 2, so...
extern double Percents =5;
extern double RiskPipsForPercents=100; // Äóáëèêàòîð ñòîï-ëîññà. Âàæåí â ñëó÷àå èñïîëüçîâàíèÿ òðåéëà.
extern bool Pause1800 =true; // Ïàóçà, ÷òîáû íå âèëÿòü ñäåëêàìè òóäà-ñþäà. Ïîë-÷àñà (îäèí áàð íà Ì30, ïîë-áàðà íà Í1)
extern string ATR = "---- ---- ---- ----";
extern string Ïðåäíàçíà÷åíèå_ATR = "ATR ìîæíî èñïîëüçîâàòü äëÿ óñòàíîâêè TP è SL."; // Actually, never tuned by me properly.
extern string ________________ = "ATR_Multiply íàñòðàèâàåò ìíîæèòåëü ÷óâñòâèòåëüíîñòè";
extern string __By_26_994_____ = "Íàïðèìåð, åñëè Multiply=0.9, òî ðåàêöèÿ - 0.9 ïèïñîâ íà 0.0001 ATR";
extern double ATR_Period =14;
extern double ATR_Multiply = 0.9;
extern double ATR_Reach =0.0014;
extern bool ATR_SL = false;
extern bool ATR_TP = false;
//+------------------------------------------------------------------+
//------
bool Work=true;
bool OrderSal;
string Symb; // Èìÿ ïàðû (íàïðèìåð - EURUSD èëè GBPJPY)
//----------------------------------------------------------- 2 -----
int start()
{
int
Total, // Êîëè÷åñòâî îðäåðîâ â îêíå
Tip=-1, // Òèï âûáðàí. îðäåðà (B=0,S=1)
Ticket; // Íîìåð îðäåðà
double
Lot, // Êîëè÷. ëîòîâ â âûáðàí.îðäåðå
Lts, // Êîëè÷. ëîòîâ â îòêðûâ.îðäåðå
lot,
Min_Lot, // Ìèíèìàëüíîå êîëè÷åñòâî ëîòîâ
Step, // Øàã èçìåíåíèÿ ðàçìåðà ëîòà
Free, // Òåêóùèå ñâîáîäíûå ñðåäñòâà
One_Lot, // Ñòîèìîñòü îäíîãî ëîòà
Price, // Öåíà âûáðàííîãî îðäåðà
SL, // SL âûáðàííîãî îðäåðà
TP, // TP âûáðàííîãî îðäåðà
//--
MA_By,MA_Sell,Stoh_By,Stoh_Sell,AO_By,AO_Sell,StdDev_By,StdDev_Sell,AC_By,AC_Sell,Cls_MA_Sell,Cls_MA_By,Cls_Stoh_Sell,Cls_Stoh_By,
Cls_AO_Sell,Cls_AO_By,Cls_StdDev_By,Cls_StdDev_Sell,Cls_AC_Sell,Cls_AC_By,Dema_By,Cls_Dema_Sell,Dema_Sell,Cls_Dema_By,CCI_By,CCI_Sell,Cls_WPR_Sell,Cls_CCI_By,Cls_CCI_Sell,
RSI_By,RSI_Sell,Cls_RSI_Sell,Cls_RSI_By,MFI_By,MFI_Sell,Cls_MFI_Sell,Cls_MFI_By,WPR_By,WPR_Sell,Cls_WRP_Sell,Cls_WPR_By, //äîáàâëåííîå.
MACD_By,MACD_Sell,Cls_MACD_Sell,Cls_MACD_By,OsMA_By,OsMA_Sell,Cls_OsMA_Sell,Cls_OsMA_By,ADX_By,ADX_Sell,Cls_ADX_Sell,Cls_ADX_By,SAR_By,SAR_Sell,Cls_SAR_Sell,Cls_SAR_By,
Custom_1__By, Custom_1__Sell, Cls_Custom_1__By, Cls_Custom_1__Sell,Custom_2__By, Custom_2__Sell, Cls_Custom_2__By, Cls_Custom_2__Sell,
Custom_3__By, Custom_3__Sell, Cls_Custom_3__By, Cls_Custom_3__Sell,Custom_4__By, Custom_4__Sell, Cls_Custom_4__By, Cls_Custom_4__Sell,
Custom_5__By, Custom_5__Sell, Cls_Custom_5__By, Cls_Custom_5__Sell,Custom_6__By, Custom_6__Sell, Cls_Custom_6__By, Cls_Custom_6__Sell,
Custom_7__By, Custom_7__Sell, Cls_Custom_7__By, Cls_Custom_7__Sell,Custom_8__By, Custom_8__Sell, Cls_Custom_8__By, Cls_Custom_8__Sell;
bool
Modific=true,
Ans =false, // Îòâåò ñåðâåðà ïîñëå çàêðûòèÿ
Cls_B=false, // Êðèòåðèé äëÿ çàêðûòèÿ Buy
Cls_S=false, // Êðèòåðèé äëÿ çàêðûòèÿ Sell
Opn_B=false, // Êðèòåðèé äëÿ îòêðûòèÿ Buy
Opn_S=false, // Êðèòåðèé äëÿ îòêðûòèÿ Sell
S_Bar=false; // Êðèòåðèé äëÿ Sleep Bar (ïîëó÷àñîâàÿ ïàóçà, ÷òîáû íå ñòðàäàòü ëèøíèìè ñäåëêàìè)
// Comment // Áëîê êîììåíòàðèåâ â îêíå. Îòêëþ÷åíî (íî ìîæíî âêëþ÷èòü, ïðîñòî ñòåðåâ çäåñü //øå÷êè)
// (
// "TIME: ",TimeToStr(TimeCurrent()),
// "\n",
// "Order-s paramethers (##,TP,SL,LOT): |",OrderTicket(),"|",OrderStopLoss(),"|",OrderTakeProfit(),"|",OrderLots(),"|",
// "\n",
// "ID_Number: ", ID_of_EA,
// "\n",
// "StakeType, #:",StakeMode,
// "\n",
// "% for #3: ",Percents,
// "\n",
// "StopOut: ", AccountStopoutLevel(),
// "\n",
// "Spread: ", MarketInfo(Symbol(),MODE_SPREAD),
// "\n",
// "Leverage, 1 to: ",AccountLeverage(),
// "\n",
// "Broker", TerminalCompany( ) ,
// "\n",
// "\n",
// "\n", // ìåæäó "\n", ïèõàþòñÿ íîâûå ÷èñëà äëÿ îòîáðàæåíèÿ.
// "\n"
// ); // Ðåñóðñû åñòü î÷åíü æàäíî, ïîòîìó è îòêëþ÷èë.
// Íà ðåàëå ìîæíî è ñòåðåòü ýòè //-øêè, ÷òîáû âêëþ÷èòü â ëåâîì óãëó ýêðàíà êðàñîòó äîï. öèôåðîê :)
//-------------------- Pause after closed order. ------------------ 3 -
int time0 = 0; // Îáüÿâëÿåì íåîáõîäèìûå ïåðåìåííûå
for(int t0 = OrdersHistoryTotal();t0>=0;t0--) // Ïåðåáèðàåì âñå çàêðûòûå îðäåðà
if(OrderSelect(t0, SELECT_BY_POS,MODE_HISTORY )==true) // Åñëè îðäåð ñ òàêèì íîìåðîì (i) â ñïèñêå çàêðûòûõ îðäåðîâ åñòü ( íå ïóòàòü ñ òèêåòîì)
{
if( iTime(NULL,0,0)-OrderOpenTime() <1800 && Pause1800==true) //Óñëîâèÿ ïàóçû
{
S_Bar=true; // Äåéñòâèÿ iTime(NULL,0,1)
Alert("Ïåðåêóð. 994 ñåêóíäû.");
}
// return(0);
}
//-------------------- Pre-Work Sorting-------------------------- 3.5 -
if(Work==false) // Critical error
{
Alert("Îòêëþ÷åíî, ïîòîìó ÷òî ÊÐÈÒÈ×ÅÑÊÀß ÎØÈÁÊÀ.");
return; // Exit from start()
}
//------------------------------Ó÷¸ò îðäåðîâ--------------------------------- 4 --
Symb=Symbol(); // Íàçâàíèå ôèí.èíñòð.
Total=0; // Êîëè÷åñòâî îðäåðîâ
for(int i=1; i<=OrdersTotal(); i++) // Öèêë ïåðåáîðà îðäåð
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
{ // Àíàëèç îðäåðîâ:
if (OrderSymbol()!=Symb)continue; // Íå íàø ôèí. èíñòðóì
Total++; // Ñ÷¸ò÷èê ðûíî÷í. îðä
if (Total>1) // Íå áîëåå îäíîãî îðä -- Ïîääåðæêà îòëîæåííûõ!
{
Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
Ticket=OrderTicket(); // Íîìåð âûáðàíí. îðä.
Tip =OrderType(); // Òèï âûáðàííîãî îðä.
Price =OrderOpenPrice(); // Öåíà âûáðàíí. îðä.
SL =OrderStopLoss(); // SL âûáðàííîãî îðä.
TP =OrderTakeProfit(); // TP âûáðàííîãî îðä.
Lot =OrderLots(); // Êîëè÷åñòâî ëîòîâ
}
}
//---------------------------Òîðãîâûå êðèòåðèè------------------------------------ 5 --
//---------------------------Òîðãîâûå êðèòåðèè------------------------------------ 5 --
//ATR for TP and SL is here------------------------------
if(ATR_SL==true && iATR(NULL,0,ATR_Period,1)>=ATR_Reach)
StopLoss=iATR(NULL,0,ATR_Period,0)*ATR_Multiply/0.0001; //Çäåñü ìû èìååì ìîäèôèêàòîð òåéêà è ñòîïà.
if(ATR_TP==true && iATR(NULL,0,ATR_Period,1)>=ATR_Reach)
TakeProfit=iATR(NULL,0,ATR_Period,0)*ATR_Multiply/0.0001;
// Êðàòêàÿ èíñòðóêöèÿ ïî èíäèêàòîðàì:
//(iXXXX(NULL,0,bla,bla,bla)>??????) - òàê óñòðîåíî óðàâíåíèÿ èíäèêàòîðà.
// iXXXX - ñàìî íàçâàíèå, (NULL,0,bla,bla,bla) - åãî óñëîâèÿ, ?????? - òî, ñ ÷åì ñðàâíèâàåì.
// È åù¸. Çàêðûâàéòå ñêîáêè â óðàâíåíèè ïðàâèëüíî - íåçàêðûòàÿ ëåâàÿ ñêîáêà çàñòàâëÿåò ðûòüñÿ ïî âñåé ïðîãðàììå.
// Èòàê.
// Äëÿ ëåâîé ÷àñòè - íå òðîãàòü íè÷åãî íå íàäî (èìåííî â ýòîì âñÿ ñóòü)
// Äëÿ ïðàâîé - ñìîòðèòå:
//
// if(iAO(NULL,0,1)<iAO(NULL,0,2)) - ïðèìåð â ñòèëå "áîëüøå\ìåíüøå ïðåäûäóùåãî áàðà".
// if(iAO(NULL,0,1)<iAO(NULL,0,2) && iAO(NULL,0,2)>iAO(NULL,0,3)) - óæå "êðþê" - "0,2" áîëüøå è "0,1" è "0,3"
// Åñëè ÷òî, ýòî ïîðÿäêîâûå ÷èñëà - 1-ûé, 2-îé è 3-èé îò ïîñëåäíåãî áàðà. Íóëåâîé 0,0 - òîò, êîòîðûé åù¸ íå çàêðûëñÿ.
//
// if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,1)>Close[0]) - ýòî óæå ïðèìåð ïåðåñå÷åíèÿ ñ öåíîé (Close[0]).
// Ñëîâà Close è Open çàðåçåðèðîâàíû äëÿ öåí. [0] - ýòî òîò æå "øèôò".
// Ìåòîä òîëüêî äëÿ èíäèêàòîðîâ, êîòîðûå "íà ãðàôèêå".
//
// if (iRSI(NULL,0,RSI_Period,0,1)>RSI_High) - ýòî óæå çàêðûòèå ïî óðîâíþ (0; 50; õõõõõõõ; niz_ur; ÷òî óãîäíî)
// Ýòî óæå äëÿ èíäèêàòîðîâ â îòäåëüíîì îêíå.
//MAs------------------------------------
if(otkr_MA==true)
{
if(iMA(NULL,0,MA1,Shift_1,MA_type,PRICE_CLOSE,GeneralShift)>iMA(NULL,0,MA2,Shift_2,MODE_SMA,PRICE_CLOSE,GeneralShift+1))
{
MA_By =true;// Normally SMA, but here is my edit.
}
if(iMA(NULL,0,MA1,Shift_1,MA_type,PRICE_CLOSE,GeneralShift)<iMA(NULL,0,MA2,Shift_2,MODE_SMA,PRICE_CLOSE,GeneralShift+1))
{
MA_Sell =true;
}
}
if(zakr_MA==true)
{
if(iMA(NULL,0,MA1,Shift_1,MA_type,PRICE_CLOSE,GeneralShift)>iMA(NULL,0,MA2,Shift_2,MODE_SMA,PRICE_CLOSE,GeneralShift+1))
{
Cls_MA_Sell=true;
}
if(iMA(NULL,0,MA1,Shift_1,MA_type,PRICE_CLOSE,GeneralShift)<iMA(NULL,0,MA2,Shift_2,MODE_SMA,PRICE_CLOSE,GeneralShift+1))
{
Cls_MA_By=true;
}
}
//Ñòîõàñòèê-------------------------------
if(otkr_Stoh==true)
{
if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)>iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,2,GeneralShift)
&& iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)<zoneBUY)
{
Stoh_By =true;
}
if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)<iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,2,GeneralShift)
&& iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)>zoneSELL)
{
Stoh_Sell =true;
}
}
if(zakr_Stoh==true)
{
if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)>iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,2,GeneralShift)
&& iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)<zoneBUY)
{
Cls_Stoh_Sell=true;
}
if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)<iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,2,GeneralShift)
&& iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,GeneralShift)>zoneSELL)
{
Cls_Stoh_By=true;
}
}
//Awesome--------------------------------
if(otkr_AO==true)
{
if(iAO(NULL,0,GeneralShift)<iAO(NULL,0,GeneralShift+1)&&iAO(NULL,0,GeneralShift)<0)
{
AO_By =true;
}
if(iAO(NULL,0,GeneralShift)>iAO(NULL,0,GeneralShift+1)&&iAO(NULL,0,GeneralShift)>0)
{
AO_Sell =true;
}
}
if(zakr_AO==true)
{
if(iAO(NULL,0,GeneralShift)>iAO(NULL,0,GeneralShift+1)&&iAO(NULL,0,GeneralShift)<0)
{
Cls_AO_Sell=true;
}
if(iAO(NULL,0,GeneralShift)<iAO(NULL,0,GeneralShift+1)&&iAO(NULL,0,GeneralShift)>0)
{
Cls_AO_By=true;
}
}
//StdDev(Standard Deviation)-------------
if(otkr_StdDev==true)
{
if(iStdDev(NULL,0,StdDevMAPeriod,StdDevMAShift,1,0,GeneralShift)>StdDevLimitToOpen)
{
StdDev_By=true;
}
if(iStdDev(NULL,0,StdDevMAPeriod,StdDevMAShift,1,0,GeneralShift)>StdDevLimitToOpen)
{
StdDev_Sell=true; // What? This "wait or not".
}
}
if(zakr_StdDev==true)
{
if(iStdDev(NULL,0,StdDevMAPeriod,StdDevMAShift,1,0,GeneralShift)<StdDevLimitToClose)
{
Cls_AO_Sell=true;
}
if(iStdDev(NULL,0,StdDevMAPeriod,StdDevMAShift,1,0,GeneralShift)<StdDevLimitToClose)
{
Cls_AO_By=true;
}
}
//Demarker----------------------------
if(otkr_Dema==true)
{
if (iDeMarker(NULL, 0, DeMa_period, GeneralShift)<niz_ur)
{
Dema_By =true;
}
if (iDeMarker(NULL, 0, DeMa_period, GeneralShift)>verx_ur)
{
Dema_Sell =true;
}
}
if(zakr_Dema==true)
{
if (iDeMarker(NULL, 0, DeMa_period, GeneralShift)<niz_ur)
{
Cls_Dema_Sell=true;
}
if (iDeMarker(NULL, 0, DeMa_period, GeneralShift)>verx_ur)
{
Cls_Dema_By=true;
}
}
//CCI:------------------
if(otkr_CCI==true)
{
if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN,GeneralShift)>CCI_Level)
{
CCI_By =true;
}
if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN,GeneralShift)<-CCI_Level)
{
CCI_Sell =true;
}
}
if(zakr_CCI==true)
{
if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN,GeneralShift)<-CCI_Level) // Not hook.
{
Cls_CCI_Sell=true;
}
if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN,GeneralShift)>CCI_Level)
{
Cls_CCI_By=true;
}
}
//RSI---------------------------------------------------------------------
if(otkr_RSI==true)
{
if (iRSI(NULL,0,RSI_Period,0,GeneralShift)>RSI_High)
{
RSI_By=true;
}
if (iRSI(NULL,0,RSI_Period,0,GeneralShift)<RSI_Low)
{
RSI_Sell=true;
}
}
if(zakr_RSI==true)
{
if (iRSI(NULL,0,RSI_Period,0,GeneralShift)>RSI_High)
{
Cls_RSI_Sell=true;
}
if (iRSI(NULL,0,RSI_Period,0,GeneralShift)<RSI_Low)
{
Cls_RSI_By=true;
}
}
//MFI-------------------------------
if(otkr_MFI==true)
{
if (iMFI(NULL,0,MFI_Period,GeneralShift)>MFI_High)
{
MFI_By=true;
}
if (iMFI(NULL,0,MFI_Period,GeneralShift)<MFI_Low)
{
MFI_Sell=true;
}
}
if(zakr_MFI==true)
{
if (iMFI(NULL,0,MFI_Period,GeneralShift)>MFI_High/2+MFI_Low/2) // òóò çàêðûòèå ïî ñåðåäèíå
{
Cls_MFI_Sell=true;
}
if (iMFI(NULL,0,MFI_Period,GeneralShift)<MFI_High/2+MFI_Low/2)
{
Cls_MFI_By=true;
}
}
//WPR--------------------------------
if(otkr_WPR==true)
{
if (iWPR(NULL,0,WPR_Period,GeneralShift)>-20)
{
WPR_By=true;
}
if (iWPR(NULL,0,WPR_Period,GeneralShift)<-80)
{
WPR_Sell=true;
}
}
if(zakr_WPR==true)
{
if (iWPR(NULL,0,WPR_Period,GeneralShift)>-20) // I hope you get it.
{
Cls_WPR_Sell=true;
}
if (iWPR(NULL,0,WPR_Period,GeneralShift)<-80)
{
Cls_WPR_By=true;
}
}
//MACD-------------------------------
if(otkr_MACD==true)
{
if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,1,GeneralShift)>0)
{
MACD_By=true;
}
if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,1,GeneralShift)<0)
{
MACD_Sell=true;
}
}
if(zakr_MACD==true)
{
if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,1,GeneralShift)>0)
{
Cls_MACD_Sell=true;
}
if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,1,GeneralShift)<0)
{
Cls_MACD_By=true;
}
}
//OsMA-------------------------------
if(otkr_OsMA==true)
{
if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,GeneralShift)>0.001) // Òàê ìîæíî è "ïóñòóþ çîíó" ïîñòàâèòü
{
MACD_By=true;
}
if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,GeneralShift)<-0.001)// Óäîáíî - ôëåò "ïðîëåòàåò".
{
MACD_Sell=true;
}
}
if(zakr_OsMA==true)
{
if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,GeneralShift)>0)// À òóò - íåò. Óäîáíî!
{
Cls_MACD_Sell=true;
}
if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,GeneralShift)<0)
{
Cls_MACD_By=true;
}
}
//ADX-------------------------------
if(otkr_ADX==true)
{
if (iADX(NULL,0,ADX_Period,1,0,GeneralShift)>70)
{
ADX_By=true;
}
if (iADX(NULL,0,ADX_Period,1,0,GeneralShift)<30)
{
ADX_Sell=true;
}
}
if(zakr_ADX==true)
{
if (iADX(NULL,0,ADX_Period,1,0,GeneralShift)>70)
{
Cls_ADX_Sell=true;
}
if (iADX(NULL,0,ADX_Period,1,0,GeneralShift)<30)
{
Cls_ADX_By=true;
}
}
//SAR-------------------------------
if(otkr_SAR==true)
{
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0])
{
SAR_By=true;
}
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0])
{
SAR_Sell=true;
}
}
if(zakr_SAR==true)
{
if (iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0])
{
Cls_SAR_Sell=true;
}
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0])
{
Cls_SAR_By=true;
}
}
// A-a-a-nd the custom indicators. I bet you were searching for some newbie-for possibility to use custom indicators.
//--------Custom_1__------------------
if(otkr_Custom_1==true)
{
if(iCustom(NULL,0,IndName1,0,Shift1)>0) // You know, you're supposed to find and tune tune the custom indicator by yourself.
{ // I mean, all the tunes are saved in code (as basiccal\standard)
Custom_1__By=true; // As a rule, the custom inds don't need any tunes... mostly...
} // Well, if any problems, you just need to edit an indicator simply by changing the digits "in case".
//"Theese \/ ones" // Snippet: between name ("ZZ") and last two (,0,0)) digits you can put variables
if(iCustom(NULL,0,IndName1,0,Shift1)<0)
{
Custom_1__Sell=true;
}
}
if(zakr_Custom_1==true)
{
if(iCustom(NULL,0,IndName1,0,Shift1)<0)
{
Cls_Custom_1__By=true;// _1__ , because there were up to 16 custom inds aviliable - you could find _10_, _16_, _9__...
}
if(iCustom(NULL,0,IndName1,0,Shift1)>0)
{
Cls_Custom_1__Sell=true;
}
}
//--------Custom_2__------------------
if(otkr_Custom_2==true)
{
if(iCustom(NULL,0,IndName2,0,Shift2)>0)
{
Custom_2__By=true;
}
if(iCustom(NULL,0,IndName2,0,Shift2)<0)
{
Custom_2__Sell=true;
}
}
if(zakr_Custom_2==true)
{
if(iCustom(NULL,0,IndName2,0,Shift2)<0) // Lamest ever :)
{
Cls_Custom_2__By=true;
}
if(iCustom(NULL,0,IndName2,0,Shift2)>0)
{
Cls_Custom_2__Sell=true;
}
}
//--------Custom_3__------------------
if(otkr_Custom_3==true)
{
if(iCustom(NULL,0,IndName3,0,Shift3)>0)
{
Custom_3__By=true;
}
if(iCustom(NULL,0,IndName3,0,Shift3)<0)
{
Custom_3__Sell=true;
}
}
if(zakr_Custom_3==true)
{
if(iCustom(NULL,0,IndName3,0,Shift3)<0)
{
Cls_Custom_3__By=true;
}
if(iCustom(NULL,0,IndName3,0,Shift3)>0)
{
Cls_Custom_3__Sell=true;
}
}
//--------Custom_4__------------------
if(otkr_Custom_4==true)
{
if(iCustom(NULL,0,IndName4,0,Shift4)>0) // Çàìåíà: Íàçâàíèå çàãðóæåííîãî èíäèêàòîðà íà ìåñòî áèðþçîâîé íàäïèñè.
{
Custom_4__By=true;
}
if(iCustom(NULL,0,IndName4,0,Shift4)<0)
{
Custom_4__Sell=true;
}
}
if(zakr_Custom_4==true)
{
if(iCustom(NULL,0,IndName4,0,Shift4)<0)
{
Cls_Custom_4__By=true;
}
if(iCustom(NULL,0,IndName4,0,Shift4)>0)
{
Cls_Custom_4__Sell=true;
}
}
//--------Custom_5__------------------
if(otkr_Custom_5==true)
{
if(iCustom(NULL,0,IndName5,0,Shift5)>0) // Çàìåíà: Íàçâàíèå çàãðóæåííîãî èíäèêàòîðà íà ìåñòî áèðþçîâîé íàäïèñè.
{
Custom_5__By=true;
}
if(iCustom(NULL,0,IndName5,0,Shift5)<0)
{
Custom_5__Sell=true;
}
}
if(zakr_Custom_5==true)
{
if(iCustom(NULL,0,IndName5,0,Shift5)<0)
{
Cls_Custom_5__By=true;
}
if(iCustom(NULL,0,IndName5,0,Shift5)>0)
{
Cls_Custom_5__Sell=true;
}
}
//--------Custom_6__------------------
if(otkr_Custom_6==true)
{
if(iCustom(NULL,0,IndName6,0,Shift6)>0) // Çàìåíà: Íàçâàíèå çàãðóæåííîãî èíäèêàòîðà íà ìåñòî áèðþçîâîé íàäïèñè.
{
Custom_6__By=true;
}
if(iCustom(NULL,0,IndName6,0,Shift6)<0)
{
Custom_6__Sell=true;
}
}
if(zakr_Custom_6==true)
{
if(iCustom(NULL,0,IndName6,0,Shift6)<0)
{
Cls_Custom_6__By=true;
}
if(iCustom(NULL,0,IndName6,0,Shift6)>0)
{
Cls_Custom_6__Sell=true;
}
}
//--------Custom_7__------------------
if(otkr_Custom_7==true)
{
if(iCustom(NULL,0,IndName7,0,Shift7)>0) // Çàìåíà: Íàçâàíèå çàãðóæåííîãî èíäèêàòîðà íà ìåñòî áèðþçîâîé íàäïèñè.
{
Custom_7__By=true;
}
if(iCustom(NULL,0,IndName7,0,Shift7)<0)
{
Custom_7__Sell=true;
}
}
if(zakr_Custom_7==true)
{
if(iCustom(NULL,0,IndName7,0,Shift7)<0)
{
Cls_Custom_7__By=true;
}
if(iCustom(NULL,0,IndName7,0,Shift7)>0)
{
Cls_Custom_7__Sell=true;
}
}
//--------Custom_8__------------------
if(otkr_Custom_8==true)
{
if(iCustom(NULL,0,IndName8,0,Shift8)>0) // Çàìåíà: Íàçâàíèå çàãðóæåííîãî èíäèêàòîðà íà ìåñòî áèðþçîâîé íàäïèñè.
{
Custom_8__By=true;
}
if(iCustom(NULL,0,IndName8,0,Shift8)<0)
{
Custom_8__Sell=true;
}
}
if(zakr_Custom_8==true)
{
if(iCustom(NULL,0,IndName8,0,Shift8)<0)
{
Cls_Custom_8__By=true;
}
if(iCustom(NULL,0,IndName8,0,Shift8)>0)
{
Cls_Custom_8__Sell=true;
}
}
//--------------------------------Open Buy and Sell------------------------------------------ 7 ----//
if (MA_By ==true||otkr_MA==false &&
Stoh_By ==true||otkr_Stoh==false&&
AO_By ==true||otkr_AO==false &&
StdDev_By ==true||otkr_StdDev==false&&
Dema_By ==true||otkr_Dema==false&&
CCI_By ==true||otkr_CCI==false &&
RSI_By ==true||otkr_RSI==false &&
MFI_By ==true||otkr_MFI==false &&
WPR_By ==true||otkr_WPR==false &&
MACD_By==true||otkr_MACD==false &&
OsMA_By==true||otkr_OsMA==false &&
ADX_By ==true||otkr_ADX==false &&
SAR_By ==true||otkr_SAR==false &&
Custom_1__By==true||otkr_Custom_1==false&&
Custom_2__By==true||otkr_Custom_2==false&&
Custom_3__By==true||otkr_Custom_3==false&&
Custom_4__By==true||otkr_Custom_4==false&&
Custom_5__By==true||otkr_Custom_5==false&&
Custom_6__By==true||otkr_Custom_6==false&&
Custom_7__By==true||otkr_Custom_7==false&&
Custom_8__By==true||otkr_Custom_8==false
)
{
Opn_B=true;
}
//---------
if (
MA_Sell==true||otkr_MA==false &&
Stoh_Sell ==true||otkr_Stoh==false &&
AO_Sell ==true||otkr_AO==false &&
StdDev_Sell==true||otkr_StdDev==false &&
Dema_Sell ==true||otkr_Dema==false &&
CCI_Sell ==true||otkr_CCI==false &&
RSI_Sell ==true||otkr_RSI==false &&
MFI_Sell ==true||otkr_MFI==false &&
WPR_Sell ==true||otkr_WPR==false &&
MACD_Sell==true||otkr_MACD==false &&
OsMA_Sell==true||otkr_OsMA==false &&
ADX_Sell ==true||otkr_ADX==false &&
SAR_Sell ==true||otkr_SAR==false &&
Custom_1__Sell==true||otkr_Custom_1==false&&
Custom_2__Sell==true||otkr_Custom_2==false&&
Custom_3__Sell==true||otkr_Custom_3==false&&
Custom_4__Sell==true||otkr_Custom_4==false&&
Custom_5__Sell==true||otkr_Custom_5==false&&
Custom_6__Sell==true||otkr_Custom_6==false&&
Custom_7__Sell==true||otkr_Custom_7==false&&
Custom_8__Sell==true||otkr_Custom_8==false
)
{
Opn_S=true;
}
//--------------------------------Closing-----------------------------------------------//
if (Cls_MA_By ==true||zakr_MA==false &&
Cls_Stoh_By==true||zakr_Stoh==false&&
Cls_AO_By ==true||zakr_AO==false &&
Cls_StdDev_By==true||zakr_StdDev==false &&
Cls_Dema_By==true||zakr_Dema==false&&
Cls_CCI_By ==true||zakr_CCI==false &&
Cls_RSI_By ==true||zakr_RSI==false &&
Cls_MFI_By ==true||zakr_MFI==false &&
Cls_WPR_By ==true||zakr_WPR==false &&
Cls_MACD_By==true||zakr_MACD==false&&
Cls_OsMA_By==true||zakr_OsMA==false && // "By" instead of "Buy" is because it's Russian quality mark.
Cls_ADX_By ==true||zakr_ADX==false && // Also known as "cheap and angry" or how Americans say equal idioma?
Cls_SAR_By ==true||zakr_SAR==false &&
Cls_Custom_1__By==true||zakr_Custom_1==false&&
Cls_Custom_2__By==true||zakr_Custom_2==false&&
Cls_Custom_3__By==true||zakr_Custom_3==false&&
Cls_Custom_4__By==true||zakr_Custom_4==false&&
Cls_Custom_5__By==true||zakr_Custom_5==false&&
Cls_Custom_6__By==true||zakr_Custom_6==false&&
Cls_Custom_7__By==true||zakr_Custom_7==false&&
Cls_Custom_8__By==true||zakr_Custom_8==false
)
{
Cls_B=true;
}
if (Cls_MA_Sell ==true||zakr_MA==false &&
Cls_Stoh_Sell ==true||zakr_Stoh==false&&
Cls_AO_Sell ==true||zakr_AO==false &&
Cls_StdDev_Sell==true||zakr_StdDev==false &&
Cls_Dema_Sell==true||zakr_Dema==false&&
Cls_CCI_Sell==true||zakr_CCI==false &&
Cls_RSI_Sell==true||zakr_RSI==false &&
Cls_MFI_Sell==true||zakr_MFI==false &&
Cls_WPR_Sell==true||zakr_WPR==false &&
Cls_MACD_Sell==true||zakr_MACD==false&&
Cls_OsMA_Sell==true||zakr_OsMA==false&&
Cls_ADX_Sell==true||zakr_ADX==false &&
Cls_SAR_Sell==true||zakr_SAR==false &&
Cls_Custom_1__Sell==true||zakr_Custom_1==false&&
Cls_Custom_2__Sell==true||zakr_Custom_2==false&&
Cls_Custom_3__Sell==true||zakr_Custom_3==false&&
Cls_Custom_4__Sell==true||zakr_Custom_4==false&&
Cls_Custom_5__Sell==true||zakr_Custom_5==false&&
Cls_Custom_6__Sell==true||zakr_Custom_6==false&&
Cls_Custom_7__Sell==true||zakr_Custom_7==false&&
Cls_Custom_8__Sell==true||zakr_Custom_8==false
) // - there must be the parenthis
{
Cls_S=true;
}
//-----------------------------Closing the orders (by signals from previous part :) )---------------------------------- 8 --
//-----------------------------Çàêðûòèå îðäåðîâ---------------------------------- 6 --
while(true) // Öèêë çàêðûòèÿ îðä.
{
if (Tip==0 && Cls_B==true) // Îòêðûò îðäåð Buy..Óñëîâèÿ çàêðûòèÿ Buy
{ //è åñòü êðèòåðèé çàêð
Alert("Ïîïûòêà çàêðûòü Buy ",Ticket,". Îæèäàíèå îòâåòà..");
RefreshRates(); // Îáíîâëåíèå äàííûõ
Ans=OrderClose(Ticket,Lot,Bid,2); // Çàêðûòèå Buy
if (Ans==true) // Ïîëó÷èëîñü :)
{
Alert ("Çàêðûò îðäåð Buy ",Ticket);
break; // Âûõîä èç öèêëà çàêð
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
if (Tip==1 && Cls_S==true) // Îòêðûò îðäåð Sell..Óñëîâèÿ çàêðûòèÿ Sell
{ // è åñòü êðèòåðèé çàêð
Alert("Ïîïûòêà çàêðûòü Sell ",Ticket,". Îæèäàíèå îòâåòà..");
RefreshRates(); // Îáíîâëåíèå äàííûõ
Ans=OrderClose(Ticket,Lot,Ask,2); // Çàêðûòèå Sell
if (Ans==true) // Ïîëó÷èëîñü :)
{
Alert ("Çàêðûò îðäåð Sell ",Ticket);
break; // Âûõîä èç öèêëà çàêð
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
break; // Âûõîä èç while
}
//-----------------------------Ñòîèìîñòü îðäåðîâ---------------------------------- 7 --
RefreshRates(); // Îáíîâëåíèå äàííûõ
int time = 0;double profit = 0; //îáüÿâëÿåì íåîáõîäèìûå íàì ïåðåìåííûå êóäà ìû ïîëîæèì èíòåðåñóþùèå íàñ õàðàêòåðèñòèêè îðäåðà
for(int t = OrdersHistoryTotal();t>=0;t--) // Ïåðåáèðàåì âñå çàêðûòûå îðäåðà
{
if(OrderSelect(t,SELECT_BY_POS,MODE_HISTORY))//åñëè îðäåð ñ òàêèì íîìåðîì (i) â ñïèñêå çàêðûòûõ îðäåðîâ åñòü ( íå ïóòàòü ñ òèêåòîì)
{
if(OrderSymbol() == Symbol()) //åñëè âûáðàííûé îðäåð áûë îòêðûò ïî íàøåé âàëþòíîé ïàðå
{
if(time<OrderCloseTime()) //(ñðàâíèâàåì åãî ñ õðàíÿùèìñÿ â ïåðîåìåííîé time)
{
time=OrderCloseTime(); //åñëè âðåìÿ çàêðûòèÿ îðäåðà áîëüøå - ëîæèì åãî â ïåðåìåííóþ
profit=OrderProfit(); //è çàîäíî çàïîìèíàåì ïðèáûëü îðäåðà
lot =OrderLots(); // Êîëè÷åñòâî ëîòîâ
}
}
}
}
//-------------------------Money Management Block -------------------- 8 ---
//-----------------Êñòàòè, ÿ ó chris10 ñîáèðàþñü äîñòàòü ïðîäâèíóòûé ÌÌ - "Smart", íàïðèìåð, êîòîðûé ñíèæàåò ëîò â çàâèñèìîñòè îò ñîîò. ëîññîâ è ïðîôèòîâ.
// Ýòî äëÿ "òîðãîâëè áåç õîçÿèíà íà ñâîáîäå (òîò â òþðüìå\òàéãå\íåôòåâûøêå\áîëüíèöå (â êîìå)\ïîïðîñòó çà ãðàíèöåé â ãëóøè".
if (Opn_B==true||Opn_S==true)
{
if (StakeMode==1&&OrdersTotal()<1)Lts=Lts1;
{ // changed "100" to StopLoss
if(profit == 0 && StakeMode==2 && OrdersTotal()<1) {Lts=Lts1;} //
if(profit >= 0 && StakeMode==2 && OrdersTotal()<1) {Lts=Lts1;} //
if(profit < 0 && StakeMode==2 && OrdersTotal()<1) {Lts=lot*IK;} //Òàêîé âîò Ìàðòèíãåéë.
}
if (StakeMode==3&&OrdersTotal()<1)Lts=NormalizeDouble(AccountEquity()*Percents/RiskPipsForPercents/1000, 2); // èç "hardprofit" EA (by chris10).
}
if (Lts*One_Lot > Free) // Ëîò äîðîæå ñâîáîäí.
{
Alert(" Íå õâàòàåò äåíåã íà ", Lts," ëîòîâ");
return; // Âûõîä èç start()
}
//------------------------------------------------------------------------------
//------------------------------Îòêðûòèå îðäåðîâ--------------------------------- 9 -- // Ñëàáîå ìåñòî, íóæíî óëó÷øèòü.
while(true) // Öèêë îòêðûòèÿ îðä.
{
if (Total==0 && Opn_B==true && Cls_B==false) // Îòêðûòûõ îðä. íåò +
{ // êðèòåðèé îòêð. Buy
RefreshRates(); // Îáíîâëåíèå äàííûõ
SL=Bid - New_Stop(StopLoss)*Point; // Âû÷èñëåíèå SL îòêð.
TP=Bid + New_Stop(TakeProfit)*Point; // Âû÷èñëåíèå TP îòêð.
Alert("Ïîïûòêà îòêðûòü Buy. Îæèäàíèå îòâåòà..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,3,SL,TP);//Îòêðûòèå Buy
if (Ticket > 0) // Ïîëó÷èëîñü :)
{
Alert ("Îòêðûò îðäåð Buy ",Ticket);
return; // Âûõîä èç start()
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
if (Total==0 && Opn_S==true && Cls_S==false) // Îòêðûòûõ îðä. íåò +
{ // êðèòåðèé îòêð. Sell
RefreshRates(); // Îáíîâëåíèå äàííûõ
SL=Ask + New_Stop(StopLoss)*Point; // Âû÷èñëåíèå SL îòêð.
TP=Ask - New_Stop(TakeProfit)*Point; // Âû÷èñëåíèå TP îòêð.
Alert("Ïîïûòêà îòêðûòü Sell. Îæèäàíèå îòâåòà..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,3,SL,TP);//Îòêðûòèå Sel
if (Ticket > 0) // Ïîëó÷èëîñü :)
{
Alert ("Îòêðûò îðäåð Sell ",Ticket);
return; // Âûõîä èç start()
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
break; // Âûõîä èç while
}
return; // Âûõîä èç start()
}
//--------------------------Ô-èÿ îáðàáîò îøèáîê------------------------------------ 1* --
int Fun_Error(int Error)
{
switch(Error)
{ // Ïðåîäîëèìûå îøèáêè
case 130:Alert("Íåïðàâèëüíûå ñòîïû");
while(RefreshRates()==false) // Äî íîâîãî òèêà
Sleep(1); // Çàäåðæêà â öèêëå
return(1); // Âûõîä èç ôóíêöèè
case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..");
RefreshRates(); // Îáíîâèì äàííûå
return(1); // Âûõîä èç ôóíêöèè
case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..");
while(RefreshRates()==false) // Äî íîâîãî òèêà
Sleep(1); // Çàäåðæêà â öèêëå
return(1); // Âûõîä èç ôóíêöèè
case 137:Alert("Áðîêåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
Sleep(3000); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..");
Sleep(500); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
// Êðèòè÷åñêèå îøèáêè
case 2: Alert("Îáùàÿ îøèáêà.");
return(0); // Âûõîä èç ôóíêöèè
case 4: Alert("Òîðãîâûé ñåðâåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
Sleep(357); // Æä¸ì
return(1); // Âûõîä èç ôóíêöèè
case 5: Alert("Ñòàðàÿ âåðñèÿ òåðìèíàëà.");
Work=false; // Áîëüøå íå ðàáîòàòü
return(0); // Âûõîä èç ôóíêöèè
case 64: Alert("Ñ÷åò çàáëîêèðîâàí.");
Work=false; // Áîëüøå íå ðàáîòàòü
return(0); // Âûõîä èç ôóíêöèè
case 133:Alert("Òîðãîâëÿ çàïðåùåíà.");
return(0); // Âûõîä èç ôóíêöèè
case 134:Alert("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.");
return(0); // Âûõîä èç ôóíêöèè
default: Alert("Âîçíèêëà îøèáêà ",Error); // Äðóãèå âàðèàíòû
return(0); // Âûõîä èç ôóíêöèè
}
}
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr) // Ïðîâåðêà ñòîï-ïðèê.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Ìèíèì. äèñòàíöèÿ
if (Parametr<Min_Dist) // Åñëè ìåíüøå äîïóñò.
{
Parametr=Min_Dist; // Óñòàíîâèì äîïóñò.
Alert("Óâåëè÷åíà äèñòàíöèÿ ñòîï-ïðèêàçà.");
}
return(Parametr); // Âîçâðàò çíà÷åíèÿ
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---