Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
VR---MOVING
//+------------------------------------------------------------------+
//| Muving .mq4 |
//| "Copyright 2013, www.trading-go.ru Project." |
//| "http://www.trading-go.ru" |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, www.trading-go.ru Project."
#property link "http://www.trading-go.ru"
#property version "1.00"
#property description " Àâòîð èäåè Àëåêñåé, àâòîð êîäà Voldemar "
#property description " Òîðãîâàÿ ñèñòåìà íà îñíîâå èíäèêàòîðà Moving Awerage "
/*Ñîâåòíèê èñïîëüçóåò ïðèíöèï êà÷åëåé, ïðè ýòîì åñòü âîçìîæíîñòü óâåëè÷èâàòü ëîòû,
äëÿ ðàáîòû ïðèìåíÿåòñÿ ïðîñòàÿ ñòðàòåãèÿ. Åñëè öåíà âûøå ìóâèíãà + çàäàííàÿ äèñòàíöèÿ îòêðûâàåòñÿ áàé îðäåð
åñëè öåíà óõîäèò â íèç òî îòêðûâàåòñÿ ñåë òåìæå ëîòîì, â ñëó÷àå åñëè öåíà ñíîâà ïðîäîëæàåò ðàñòè
òî îòêðûâàåòñÿ åùå îäèí îðäåð áàé è ïðîèñõîäèò óñòàíîâêà îáùåãî ïðîôèòà è ñòîïà
*/
#property strict //Çàäàäèì ñòðîãèé ðåæèì
#define BUY 0 // Äëÿ óäîáñòâà îáîçíà÷èì ñâîè ïðåäîïðåäåëåííûå ïåðåìåííûå
#define SEL 1 // Äëÿ óäîáñòâà îáîçíà÷èì ñâîè ïðåäîïðåäåëåííûå ïåðåìåííûå
#define DEL -1 // Äëÿ óäîáñòâà îáîçíà÷èì ñâîè ïðåäîïðåäåëåííûå ïåðåìåííûå
input double Startlot=0.01; //Íà÷àëüíûé ëîò èñïîëüçóåòñÿ åñëè Risk=0;
input double Risk=0; //Íà÷àëüíûé ëîò ðàñ÷èòàííûé îò ïðîöåíò îò äåïîçèòà èñïîëüçóåòñÿ åñëè Startlot=0;
input double Multiplikatorlot=1; //Óâåëè÷åíèå ëîòà ïðè ñåðèè îðäåðîâ
input int TakeProfit=200; //Òåéê ïðîôèò â ñëó÷àå åñëè îäèí îðäåð
input int PeriodMA=60; //Ïåðèî ñêîëüçÿùåé ñðåäíåé
input int ProfitPlus=0; //Äîáàâêà ïóíêòîâ â ïëþñ ïðè îáùåì ïðîôèòå
input ENUM_APPLIED_PRICE PriceMA=PRICE_CLOSE; //Öåíà ñêîëüçÿùåé ñðåäíåé
input ENUM_MA_METHOD MehtodMA=MODE_EMA; //Ìåòîä ñêîëüçÿùåé ñðåäíåé
input int DistanciyaMA=200; //Äèñòàíöèÿ äëÿ îòêðûòèÿ îðäåðà îò ìóâèíãà è äëÿ îòêðûòèÿ ïîñëåäóþùèõ îäíîòèïíûõ îðäåðîâ
input int Magic=1; //Èíäèâèäóàëüíûé íîìåð îðäåðîâ ñîâåòíèêà
input int Slip=30; //Ïðîñêàëüçûâàíèå
double worklotbuy=0; //Ïåðåìåííàÿ äëÿ õðàíåíèÿ ëîòà äëÿ áàåâ
double worklotsel=0; //Ïåðåìåííàÿ äëÿ õðàíåíèÿ ëîòà äëÿ ñåëîâ
//+------------------------------------------------------------------+
struct re // Ñîçäàäèì ñòðóêòóðó äàííûõ
{
double max_price; // Äëÿ ìàêñèìàëüíûõ öåí
double min_price; // Äëÿ ìèíèìàëüíûõ öåí
double max_lot; // Äëÿ ìàêñèìàëüíûõ ëîòîâ
double min_lot; // Äëÿ ìèíèìàëüíûõ ëîòîâ
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//Ñîçäàäèì êëàñ, ïðîãðàììó â ïðîãðàììå
class muving
{
private:
// Òóò îáîçíà÷èì äàííûå êîòîðûå âèäíû òîëüêî â íóòðè êëàññà
string c_comm; //Ïåðåìåííàÿ äëÿ ñîçäàíèÿ êîìåíòàðèåâ â îðäåðàõ
double c_tp; //Ïåðåìåííàÿ äëÿ õðàíåíèÿ çíà÷åíèÿ Òåéê Ïðîôèòà
double c_pp; //Ïåðåìåííàÿ äëÿ õðàíåíèÿ äîáàâî÷íûõ ïóíêòîâ ê îáùåìó òåéê ïðîôèòó
public:
// Òóò îáîçíà÷èì äàííûå êîòîðûå âèäíû â îñíîâíîé ïðîãðàììå
double c_dis; //Ïåðåìåííàÿ äëÿ õðàíåíèÿ äèñòàíöèè äëÿ îòêðûòèÿ îðäåðîâ
double summlot(int typ); //Ôóíêöèÿ áóäåò ñ÷èòàòü îáùóþ ñóììó ëîòà ïî òèïó îðäåðà
double prices(int typ); //Ôóíêöèÿ áóäåò ïîëó÷àòü öåíû äëÿ îòêðûòèÿ ïåðâûõ îðäåðîâ â çàâèñèìîñòè îò ñèãíàëîâ ìóâèíãà
int counter(int typ); //Ôóíêöèÿ ïîäñ÷åòà îðäåðîâ
bool openorders(int typ,double lot);//Ôóíêöèÿ îòêðûòèÿ îðäåðîâ
void info(); //Ôóíêöèÿ äëÿ ïîëó÷åíèÿ öåí è ëîòîâ
void Take(int typ); //Ôóíêöèÿ äëÿ óñòàíîâêè Òåéê Ïðîôèòà
void awerage(int typ); //Ôóíêöèÿ óñòàíîâêè îáùèõ Òåéê Ïðîôèòà è Ñòîï Ëîññà
muving(); //Ñîçäàäèì êîíñòðóêòîð
~muving(); //Ñîçäàäèì äåñòðóêòîð
};
//+------------------------------------------------------------------+
muving :: muving() //Âûçîâ êîíñòðóêòîðà è ïðèñâîåíèå/ñîçäàíèå íîðìàëèçîâàííûõ ïåðåìåííûõ
{
c_dis=NormalizeDouble(DistanciyaMA*_Point,_Digits); //Íîðìàëèçîâàííàÿ ïåðåìåííàÿ äëÿ äèñòàíöèè ïðåîáðåòàåò âèä 0,00000
c_tp=NormalizeDouble(TakeProfit*_Point,_Digits); //Íîðìàëèçîâàííàÿ ïåðåìåííàÿ äëÿ Òåéê Ïðîôèòà ïðåîáðåòàåò âèä 0,00000
c_pp=NormalizeDouble(ProfitPlus*_Point,_Digits); //Íîðìàëèçîâàííàÿ ïåðåìåííàÿ äëÿ Ïðîôèò ïëþñà ïóíêòîâ îáùèõ Òåéê Ïðîôèòà è Ñòîï Ëîññà ïðåîáðåòàåò âèä 0,00000
}
//+------------------------------------------------------------------+
muving :: ~muving() { } //Âûçîâåì äåñòðóêòîð
//+------------------------------------------------------------------+
double muving :: prices(int typ) //  çàâèñèìîñòè îò ïîëó÷åííîãî çíà÷åíèÿ typ ðàñ÷èòàåì öåíó äëÿ îòêðûòèÿ ïåðâîãî îðäåðà
{
double rez=0; // Îáüÿâèì ëîêàëüíóþ ïåðåìåííóþ è îáíóëèì å¸
if(typ==BUY) // Ïðîâåðèì ÷åìó ðàâåí typ åñëè ðàâåí BUY 0
rez=NormalizeDouble(iMA(Symbol(),0,PeriodMA,0,MehtodMA,PriceMA,1)+c_dis,_Digits); //Ðàñ÷òèàåì öåíó äëÿ áàé îðäåðà
if(typ==SEL) // Ïðîâåðèì ÷åìó ðàâåí typ åñëè ðàâåí SEL 1
rez=NormalizeDouble(iMA(Symbol(),0,PeriodMA,0,MehtodMA,PriceMA,1)-c_dis,_Digits); //Ðàñ÷òèàåì öåíó äëÿ ñåëë îðäåðà
return rez; // Âåðíåì çíà÷åíèå â çàïðàøèâàåìîå ìåñòî êîäà
}
//+------------------------------------------------------------------+
int muving:: counter(int typ) //  çàâèñèìîñòè îò ïîëó÷åííîãî çíà÷åíèÿ typ ïîñ÷èòàåì êîëëè÷åñòâî îðäåðîâ
{
int p=0; // Îáüÿâèì ëîêàëüíóþ ïåðåìåííóþ äëÿ ïîäñ÷åòà è îáíóëèì å¸
for(int i=OrdersTotal()-1; i>=0; i--) // Ïåðåáîð îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
if(OrderMagicNumber()==Magic) // åñëè ïî íàøåìó ìåäæèêó
if(OrderSymbol()==_Symbol) // åñëè ïî íàøåìó ñèìâîëó
if(OrderType()==typ || typ==-1) // â çàâèñèìîñòè îò typ ïîñ÷èòàåì îðäåðà
p++;
return p; // Âåðíåì êîëëè÷åñòâî â çàïðàøèâàåìîå ìåñòî êîäà
}
//+------------------------------------------------------------------+
bool muving:: openorders(int typ,double lot) // Ôóíêöèÿ îòêðûòèå îðäåðîâ
{
double price=0; int p=0,tik=-2;int dig=0; // Ëîêàëüíûå ïåðåìåííûå è îáíóëåíèå èõ
if(MarketInfo(_Symbol,MODE_LOTSTEP)==0.01)dig=2; // ïðîâåðêà øàãà ëîòà
if(MarketInfo(_Symbol,MODE_LOTSTEP)==0.1 )dig=1; // ïðîâåðêà øàãà ëîòà
c_comm=StringConcatenate(WindowExpertName()," ",Magic); // Ñîáèðàåì ñòðîêó äëÿ êîììåíòàðèåâ îðäåðîâ (èìÿ ñîâåòíèêà ìåäæèê)
if(typ==BUY) price=NormalizeDouble(Ask,_Digits); // Â çàâèñèìîñòè îò typ çàïðîñèì öåíó åñëè BUY òî Ask
else price=NormalizeDouble(Bid,_Digits); // Åñëè íå BUY òî äëÿ SEL çàïðîñèì öåíó Bid
if(IsTradeAllowed() && lot>0) // Ïðîâåðèì ñâîáîäåí ëè ïîòîê òîðãîâëè è êîððåêòåí ëè íàø ëîò
while(p<5) // Êîëëè÷åñòâî ïîïûòîê îòêðûòèÿ îðäåðà 5
{
tik=OrderSend(Symbol(),typ,NormalizeDouble(lot,dig),NormalizeDouble(price,_Digits),Slip,0,0,c_comm,Magic,0,clrBlue); // Îòïðàâêà çàïðîñà
if(tik>=0) return true; // Åñëè îðäåð ïðèíÿò âûõîäèì èç ôóíêöèè
else // 针֌
{
p++; Print(__FUNCTION__,"_Error_",GetLastError()); Sleep(500); // Óâåëè÷èì ñ÷åò÷èê ïîïûòîê íà 1 è âûâåäåì êîììåíòàðèé ñ íîìåðîì îøèáêè â æóðíàë, ïîë ñåêóíäû ïîäîæäåì
}
}
return false; //  ñëó÷àå åñëè îðäåð íå îòêðûò âûéäåì ñ íåóäà÷åé èç ôóíêöèè
}
//+------------------------------------------------------------------+
void muving:: info() // Ìåòîä ñáîðà èíôîðìàöèè î îðäåðàõ
{
buy.max_price=buy.min_price=sel.max_price=sel.min_price=0; // Îáíóëèì ïåðåìåííûå ñòðóêòóðû (Ïðèìåíåíà íîâàÿ âîçìîæíîñòü ÿçûêà)
sel.max_lot=sel.min_lot=buy.max_lot=buy.min_lot=0; // Îáíóëèì ïåðåìåííûå ñòðóêòóðû (Ïðèìåíåíà íîâàÿ âîçìîæíîñòü ÿçûêà)
for(int i=OrdersTotal()-1; i>=0; i--) // Ïåðåáîð îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
if(OrderMagicNumber()==Magic) // åñëè ïî íàøåìó ìåäæèêó
if(OrderSymbol()==_Symbol) // åñëè ïî íàøåìó ñèìâîëó
{
if(OrderType()==SEL) // åñëè îðäåð SELL
{
if(OrderOpenPrice()>sel.max_price || sel.max_price==0){sel.max_price=OrderOpenPrice();sel.max_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìàêñèìàëüíîãî îðäåðà
if(OrderOpenPrice()<sel.min_price || sel.min_price==0){sel.min_price=OrderOpenPrice();sel.min_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìèíèìàëüíîãî îðäåðà
}
if(OrderType()==BUY) // åñëè îðäåð BUY
{
if(OrderOpenPrice()<buy.min_price || buy.min_price==0){buy.min_price=OrderOpenPrice();buy.min_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìèíèìàëüíîãî îðäåðà
if(OrderOpenPrice()>buy.max_price || buy.max_price==0){buy.max_price=OrderOpenPrice();buy.max_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìàêñèìàëüíîãî îðäåðà
}
}
}
//+------------------------------------------------------------------+
void muving:: Take(int typ) // Ìåòîä óñòàíîâêè Òåéê Ïðîôèòà
{
double rez=0; // Ïåðåìåííàÿ äëÿ õðàíåíèÿ ðåçóëüòàòà îáíóëèì
for(int i=OrdersTotal()-1; i>=0; i--) // Ïåðåáîð îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
if(OrderMagicNumber()==Magic) // åñëè ïî íàøåìó ìåäæèêó
if(OrderSymbol()==_Symbol) // åñëè ïî íàøåìó ñèìâîëó
{
if(OrderType()==typ && typ==BUY) rez=OrderOpenPrice()+c_tp; // Ïîëó÷èì öåíó äëÿ Òåéê Ïðîôèòà äëÿ áàåâ
if(OrderType()==typ && typ==SEL) rez=OrderOpenPrice()-c_tp; // Ïîëó÷èì öåíó äëÿ Òåéê Ïðîôèòà äëÿ ñåëîâ
if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(rez,_Digits)) // Ïðîâåðèì íå óñòàíîâëåí ëè óæå Òåéê Ïðîôèò
if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(rez,_Digits),0,clrGreen)==true)// Óñòàíîâèì öåíû Òåéê ïðîôèòà åñëè óäàëîñü
Print(__FUNCTION__," Îðäåð ìîäèôèöèðîâàí Take Profit óñïåøíî"); // Âûâåäåì çàïèñü â æóðíàë
if(typ==DEL) // Åñëè typ ðàâåí DEL -1
if(OrderStopLoss()>0 || OrderTakeProfit()>0) // Åñëè ó îðäåðîâ åñòü ñòîï ëîññ èëè òåéê ïðîôèò óäàëèì èõ
if(OrderModify(OrderTicket(),OrderOpenPrice(),0,0,0,clrGreen)==true) // Óñòàíîâèì íóëè, åñëè óäàëîñü
Print(__FUNCTION__," Îðäåð ìîäèôèöèðîâàí óñïåøíî"); // Âûâåäåì çàïèñü â æóðíàë
}
}
//+------------------------------------------------------------------+
//| Ñ÷åò÷èê ëîòîâ ïî òèïó |
//+------------------------------------------------------------------+
double muving:: summlot(int typ) // Ìåòîä ïîäñ÷åòà ëîòîâ
{
double lot=0; // Ïåðåìåííàÿ äëÿ õðàíåíèÿ ðåçóëüòàòà îáíóëèì
for(int i=OrdersTotal()-1; i>=0; i--) // Ïåðåáîð îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
if(OrderMagicNumber()==Magic) // åñëè ïî íàøåìó ìåäæèêó
if(OrderSymbol()==_Symbol) // åñëè ïî íàøåìó ñèìâîëó
if(OrderType()==typ || typ==-1) //  çàâèñèìîñòè îò typ ïîñ÷èòàåì ëîòû
lot+=OrderLots();
return lot; // Âåðíåì êîëëè÷åñòâî â çàïðàøèâàåìîå ìåñòî êîäà
}
//+------------------------------------------------------------------+
void muving::awerage(int typ) // Ðàñ÷åòà è óñòàíîâêè îáùèõ ñòîïîâ è ïðîôèòîâ
{
double buy_price=0,buy_lot=0,sel_price=0,sel_lot=0,rez=0; // Ñîçäàäèì è îáíóëèì ëîêàëüíûå ïåðåìåííûå
for(int i=OrdersTotal()-1; i>=0; i--) // Ïåðåáîð îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
if(OrderMagicNumber()==Magic) // åñëè ïî íàøåìó ìåäæèêó
if(OrderSymbol()==_Symbol) // åñëè ïî íàøåìó ñèìâîëó
{
if(OrderType()==BUY) // Åñëè BUY
{
buy_price+=OrderOpenPrice()*OrderLots(); // Ïîñ÷èòàåì äàííûå
buy_lot+=OrderLots(); // Ïîñ÷èòàåì äàííûå
}
if(OrderType()==SEL) // Åñëè SEL
{
sel_price+=OrderOpenPrice()*OrderLots(); // Ïîñ÷èòàåì äàííûå
sel_lot+=OrderLots(); // Ïîñ÷èòàåì äàííûå
}
}
if(typ==BUY) // Åñëè BUY
rez=(buy_price-sel_price)/(buy_lot-sel_lot)+c_pp; // Ðàñ÷èòàåì îáùþþ öåíó äëÿ ñòîïîâ è ïðîôèòîâ ñ ó÷åòîì äîïîëíèòåëüíûõ ïóíêòîâ ïðèáûëè ñ_ðð
if(typ==SEL) // Åñëè SEL
rez=(sel_price-buy_price)/(sel_lot-buy_lot)-c_pp; // Ðàñ÷èòàåì îáùþþ öåíó äëÿ ñòîïîâ è ïðîôèòîâ ñ ó÷åòîì äîïîëíèòåëüíûõ ïóíêòîâ ïðèáûëè ñ_ðð
for(int i=OrdersTotal()-1; i>=0; i--) // Ïåðåáîð îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
if(OrderMagicNumber()==Magic) // åñëè ïî íàøåìó ìåäæèêó
if(OrderSymbol()==_Symbol) // åñëè ïî íàøåìó ñèìâîëó
{
if(typ==BUY) // Åñëè BUY
{
if(OrderType()==BUY) // Åñëè BUY
if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(rez,_Digits)) // Ïðîâåðèì íå óñòàíîâëåí ëè óæå Òåéê Ïðîôèò
if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(rez,_Digits),0,clrRed)==true)// Óñòàíîâèì öåíû Òåéê ïðîôèòà åñëè óäàëîñü
Print(__FUNCTION__," Îáùèé ñòîï è ïðîôèò"); // Âûâåäåì çàïèñü â æóðíàë
if(OrderType()==SEL) // Åñëè SEL
if(NormalizeDouble(OrderStopLoss(),_Digits)!=NormalizeDouble(rez,_Digits))// Ïðîâåðèì íå óñòàíîâëåí ëè óæå Ñòîï Ëîññ
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(rez,_Digits),OrderTakeProfit(),0,clrRed)==true)// Óñòàíîâèì öåíû Ñòîï Ëîññ åñëè óäàëîñü
Print(__FUNCTION__," Îáùèé ñòîï è ïðîôèò"); // Âûâåäåì çàïèñü â æóðíàë
}
if(typ==SEL) // Åñëè SEL
{
if(OrderType()==SEL) // Åñëè SEL
if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(rez,_Digits)) // Ïðîâåðèì íå óñòàíîâëåí ëè óæå Òåéê Ïðîôèò
if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(rez,_Digits),0,clrRed)==true)// Óñòàíîâèì öåíû Òåéê ïðîôèòà åñëè óäàëîñü
Print(__FUNCTION__," Îáùèé ñòîï è ïðîôèò"); // Âûâåäåì çàïèñü â æóðíàë
if(OrderType()==BUY) // Åñëè BUY
if(NormalizeDouble(OrderStopLoss(),_Digits)!=NormalizeDouble(rez,_Digits))// Ïðîâåðèì íå óñòàíîâëåí ëè óæå Ñòîï Ëîññ
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(rez,_Digits),OrderTakeProfit(),0,clrRed)==true)// Óñòàíîâèì öåíû Ñòîï Ëîññ åñëè óäàëîñü
Print(__FUNCTION__," Îáùèé ñòîï è ïðîôèò"); // Âûâåäåì çàïèñü â æóðíàë
}
}
}
//+------------------------------------------------------------------+
muving go; // Îáüÿâèì êëàññ
re buy; // Îáüÿâèì ýêçåìïëÿð ñòðóêòóðû äëÿ áàåâ
re sel; // Îáüÿâèì ýêçåìïëÿð ñòðóêòóðû äëÿ ñåëîâ
//+------------------------------------------------------------------+
void OnTick()
{
if(WindowExpertName()!="VR---MOVING"){ Comment("Íå ïðàâèëüíîå èìÿ ñèñòåìû ! Ïåðåèìåíóéòå ñèñòåìó â VR---MOVING");return;} // Ïðîâåðèì íå èçìåíåíî ëè èìÿ ñîâåòíèêà
if(go.counter(BUY)==0 && go.counter(SEL)==0) // Çîïðîñèì êîëëè÷åñòâî îðäåðîâ èç ìåòîäîâ êëàññà
lot(); // Åñëè îðäåðîâ íåò ïåðåðàñ÷èòàåì ëîò
go.info(); // Âûçîâåì ìåòîä äëÿ çîïîëíåíèÿ äàííûõ î öåíàõ è ëîòàõ
if((go.counter(BUY)==0 && Ask>=go.prices(BUY)) || (go.counter(BUY)>0 && Ask>=(buy.max_price+go.c_dis))) // Ñîçäàäèì óñëîâèå äëÿ áàåâ
{
if(Multiplikatorlot>1) // Ïðîâåðèì Multiplikatorlot åñëè áîëüøå 1
if(go.counter(BUY)>0)worklotbuy=buy.max_lot*Multiplikatorlot; // Åñëè óæå åñòü îðäåðà òî óâåëè÷èì ëîò â Multiplikatorlot ðàç
if(go.openorders(BUY,worklotbuy)==true) // îòêðîåì îðäåð áàé âûçâàâ ìåòîä èç êëàññà
Print(__FUNCTION__,"Îðäåð íà ïîêóïêó îòêðûò óñïåøíî ëîò ",worklotbuy); // Âûâåäåì çàïèñü â æóðíàë
}
if((go.counter(SEL)==0 && Bid<=go.prices(SEL)) || (go.counter(SEL)>0 && Bid<=(sel.min_price-go.c_dis))) // Ñîçäàäèì óñëîâèå äëÿ áàåâ
{
if(Multiplikatorlot>1) // Ïðîâåðèì Multiplikatorlot åñëè áîëüøå 1
if(go.counter(SEL)>0)worklotsel=sel.min_lot*Multiplikatorlot; // Åñëè óæå åñòü îðäåðà òî óâåëè÷èì ëîò â Multiplikatorlot ðàç
if(go.openorders(SEL,worklotsel)==true) // îòêðîåì îðäåð ñåëë âûçâàâ ìåòîä èç êëàññà
Print(__FUNCTION__,"Îðäåð íà ïðîäàæó îòêðûò óñïåøíî ëîò ",worklotsel); // Âûâåäåì çàïèñü â æóðíàë
}
if(go.counter(BUY)==1 && go.counter(SEL)==0) go.Take(BUY); // åñëè åñòü îäèí áàé óñòàíîâèì åìó Òàéê Ïðîôèò âûçâàâ ìåòîä
if(go.counter(BUY)==0 && go.counter(SEL)==1) go.Take(SEL); // åñëè åñòü îäèí ñåë óñòàíîâèì åìó Òàéê Ïðîôèò âûçâàâ ìåòîä
if(go.counter(BUY)== go.counter(SEL)) go.Take(DEL); // Åñëè îðäðîâ áàé è ñåë ðàâíîå êîëëè÷åñòâî è îáîèõ òèïîâ áîëüøå íóëÿ óäàëèì Òåéê Ïðîôèòû è ñòîï ëîññû âûçâàâ ìåòîä
if(go.counter(BUY)>0 && go.counter(SEL)>0) // Åñëè îðäåðîâ îáîèõ òèïîâ áîëüøå íóëÿ
{
if(go.summlot(BUY)>go.summlot(SEL)) go.awerage(BUY); // Åñëè ëîòîâ ïî áàÿì áîëüøå ÷åì ëîòîâ ïî ñåëàì óñòàíîâèì îáùèå òåéêè è ñòîïû âûçâàâ ìåòîä
if(go.summlot(BUY)<go.summlot(SEL)) go.awerage(SEL); // Åñëè ëîòîâ ïî ñåëàì áîëüøå ÷åì ëîòîâ ïî áàÿì óñòàíîâèì îáùèå òåéêè è ñòîïû âûçâàâ ìåòîä
}
}
//+------------------------------------------------------------------+
void lot() // îáû÷íàÿ ôóíêöèÿ äëÿ ïåðåðàñ÷åòîâ ëîòîâ
{
double worklot=0; // Ñîçäàäèì è îáíóëèì ëîêàëüíûå ïåðåìåííûå
if(Startlot>0 && Risk==0 ) // Ïðîâåðèì åñëè ëîòû âûñòàâëåíû è ðèñê ðàâåí 0
worklot=Startlot; // ïðèñâîèì ïåðåìåííîé ñòàðòîâûé ëîò
if(Startlot==0 && Risk>0) // Ïðîâåðèì åñëè ëîòû ðàâíû 0 è ðèñê áîëüøå 0
worklot=NormalizeDouble(AccountBalance()*Risk/100/MarketInfo(_Symbol,MODE_MARGINREQUIRED),2); // Ðàñ÷èòàåì ëîò îò ïðîöåíòà îò äåïîçèòà
if(worklot<MarketInfo(_Symbol,MODE_MINLOT)) // Ïðîâåðèì íå ìåíüøå ëè íàø ëîò äîïóñòèìîãî áðîêåðîì
worklot=MarketInfo(_Symbol,MODE_MINLOT); // Åñëè ìåíüøå òî óñòàíîâèì ìèíèìàëüíî äîïóñòèìûé ëîò
if(worklot>0) // Åñëè âñå ðàñ÷åòû óäàëèñü
worklotbuy=worklotsel=worklot; // Ñîõðàíèì çíà÷åíèÿ â ïåðåìåííûõ
}
//+------------------------------------------------------------------+
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
---