Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
OpenOrder
//+----------------------------------------------------------------------------+
//| ByMarketBuy.mq4 |
//| |
//| Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 22.06.2008 Ñêðèïò ïîêóïàåò òåêóùèé ñèìâîë ïî òåêóùåé öåíå. |
//+----------------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link "http://www.kimiv.ru"
//------- Âíåøíèå ïàðàìåòðû ñêðèïòà -------------------------------------------+
double MaxLoss = 200; // Ìàêñèìàëüíûé ôèêñèðîâàííûé óáûòîê, â óå
int PersentLoss = 0; // Ïðîöåíò óáûòêà îò îñòàòêà (åñëè 0, òî èñïîëüçóåòñÿ MaxLoss)
int MagicNumber = 0; // Èäåíòèôèêàòîð ïîçèöèè
bool BySessionTime = false; // true - Îòêðîåò ïîçèöèþ òîëüêî ìåæäó OpenSessionTime è CloseSessionTime
string OpenSessionTime = "09:00";
string CloseSessionTime = "20:00";
bool ByProfitUnderLoss = true; // Îòêðîåò ïîçèöèþ åñëè ïðåäïîëàãàåìàÿ ïðèáûëü áîëüøå ôèêñèðîâàííîãî óáûòêà â ProfitFactor ðàç
double ProfitFactor = 1; // Çíà÷åíèå îòíîøåíèÿ ïðåäïîëàãàåìîé ïðèáûëè ê ôèêñèðîâàííîìó óáûòêó
color StopLossLineColor = Red; // Öâåò ëèíèè ñòîï ëîññ
color TakeProfitLineColor = Green; // Öâåò ëèíèè ïðîôèòà
bool ShowEdMessage = true; // Ïîêàçûâàòü äîïîëíèòåëüíîå ñîîáùåíèå î ïîäòâåðæäåíèè îòêðûòèÿ ïîçèöèè
bool MarketWatch = false; // Ðûíî÷íîå èñïîëíåíèå
int Slippage = 3; // Ïðîñêàëüçûâàíèå öåíû
int NumberOfTry = 2; // Êîëè÷åñòâî òîðãîâûõ ïîïûòîê
//------- Ãëîáàëüíûå ïåðåìåííûå ñêðèïòà ---------------------------------------+
bool gbDisabled = False; // Áëîêèðîâêà
bool UseSound = false; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
color clOpenBuy = LightBlue; // Öâåò çíà÷êà îòêðûòèÿ Buy
color clOpenSell = LightCoral; // Öâåò çíà÷êà îòêðûòèÿ Sell
//------- Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé -----------------------------------------+
#include <stdlib.mqh> // Ñòàíäàðòíàÿ áèáëèîòåêà ÌÒ4
//+----------------------------------------------------------------------------+
//| script program start function |
//+----------------------------------------------------------------------------+
void start() {
double sl=0, // Çíà÷åíèå êàòèðîâêè ëèíèè ñòîïà
tp=0, // Çíà÷åíèå êàòèðîâêè ëèíèè ïðîôèòà
Loss=0, // Óáûòîê â áàçîâîé âàëþòå äåïîçèòà. Âûáèðàåòñÿ ôèêñèðîâàííûé èëè ïðîöåíò
LossReal=0, // Óáûòîê â áàçîâîé âàëþòå äåïîçèòà. Ôàêòè÷åñêèé, ìåæäó ñòîïîì è îòêðûòèåì
StopLossValue=0, // Ñòîï, êàê ðàçíèöà êàòèðîâîê ëèíèè ñòîïà è òåêóùåé öåíû
TakeProfitValue=0, // Ïðîôèò, êàê ðàçíèöà êàòèðîâîê ëèíèè ïðîôèòà è òåêóùåé öåíû
Profit=0, // Ïðîôèò â áàçîâîé âàëþòå äåïîçèòà
Lots=0; // Ëîò. Íå ïîñòîÿííûé è ðàññ÷èòûâàåòñÿ îò ïîñòîÿííîãî óáûòêà
int Goto=0; // Íàïðàâëåíèå îòêðûòèÿ ïîçèöèè. Äëÿ ôóíêöèè OpenPosition.
string Operation; // Íàïðàâëåíèå îòêðûòèÿ ïîçèöèÿ. Äëÿ ôóíêöèè MessageBox.
// Ðàñ÷åò ðàçìåðà ëîòà
double Step =MarketInfo(Symbol(),MODE_LOTSTEP); // øàã èçìåíåíèÿ ðàçìåðà ëîòà. Ïðèìåð: 0.01.
double Free=AccountFreeMargin(); // ðàçìåð ñâîáîäíûõ ñðåäñòâ â âàëþòå äåïîçèòà ïî ôàêòó. Ïðèìåð: 195$.
//double OneLot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); // ñòîèìîñòü îäíîãî ëîòà ïî òåêóùåé âàëþòå. Ïðèìåð: 1000$.
double PointSize=MarketInfo(Symbol(),MODE_POINT); // Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè. Ïðèìåð: EURUSD=0.0001
//int Pl=AccountLeverage(); // çíà÷åíèå ïëå÷à. Ïðèìåð: 100.
double TickValue=MarketInfo(Symbol(), MODE_TICKVALUE); // Öåíà îäíîãî ïóíêòà â âàëþòå äåïîçèòà äëÿ 1ëîòà. Ïðèìåð: EURUSD=10.0$; EURGBP=14.9$
// Âûáîð óáûòêà: ôèêñèðîâàííûé èëè ïðîöåíò îò îñòàòêà
if (PersentLoss==0) Loss=MaxLoss;
else Loss=Free*PersentLoss/100;
// Îòêðîåò ïîçèöèþ òîëüêî ìåæäó OpenSessionTime è CloseSessionTime îòíîñèòåëüíîãî ëîêàëüíîãî âðåìåíè
if (BySessionTime && OpenInTimeGap(OpenSessionTime, CloseSessionTime)==0) {
MessageBox( "Îøèáêà:"
+"\n"
+"Âíå òîðãîâîé ñåññèè ..."
, "Îøèáêà", 0x00000000);
return(0);
}
// Åñëè îáùàÿ ïðèáûëü ìåæäó ñòîïîì è îòêðûòèåì âñåõ îðäåðîâ áîëüøå èëè ðàâíà Loss, èëè íåò îðäåðîâ òî äàëüøå. Èíà÷å âûõîäèì
if (ByProfitUnderLoss && AllOrdersProfit(Loss)==0) {
MessageBox( "Îøèáêà:"
+"\n"
+"Ïðèáûëü ïî îòêðûòûì îðäåðàì < "+DoubleToStr(Loss, 2)
, "Îøèáêà", 0x00000000);
return(0);
}
LinesCreate();
// Âûâîä ìåññåäæáîêñà äëÿ ïàóçû âûñòàâëåíèÿ ëèíèé
int Answer = MessageBox( "Âûñòàâòå SL-Red è TP-Green", "Óñòàíîâêà îðäåðà", 0x00000001 | 0x00000040 | 0x00040000 );
if ( Answer != 1) { deinit(); return(0); } // Åñëè íàæàòà ëþáàÿ êíîïêà êðîìå "ÎÊ" - âûõîäèì
// Ñ÷èòûâàíèå çíà÷åíèé êàòèðîâîê ïîëîæåíèÿ ñòîïà è ïðîôèòà ñ ëèíèé
sl = NormalizeDouble( ObjectGet( "StopLossLine", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
tp = NormalizeDouble( ObjectGet( "TakeProfitLine", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
// Ïîêóïêà èëè ïðîäàæà
if (sl<tp) {
Operation="BUY";
Goto=OP_BUY;
StopLossValue=Ask-sl;
TakeProfitValue=tp-Ask;
}
if (sl>tp) {
Operation="SELL";
Goto=OP_SELL;
StopLossValue=sl-Bid;
TakeProfitValue=Bid-tp;
}
// Ðàñ÷åò ðàçìåðà ëîòà è âîçìîæíîãî ïðîôèòà
Lots=MathFloor(Loss*PointSize/StopLossValue/TickValue/Step)*Step; // Â ëîòàõ
LossReal=StopLossValue*Lots*TickValue/PointSize; // Ôàêòè÷åñêèé ðàçìåð ëîññ ñ ó÷åòîì ðàçìåðà øàãà èçìåíåíèÿ ëîòà
Profit=TakeProfitValue*Lots*TickValue/PointSize; // Â $
// Îòêðîåò ïîçèöèþ åñëè ïðåäïîëàãàåìàÿ ïðèáûëü áîëüøå ôèêñèðîâàííîãî óáûòêà â ProfitFactor ðàç
if (ByProfitUnderLoss && Profit/LossReal<ProfitFactor) {
MessageBox( "Îøèáêà:"
+"\n"
+"TP("+DoubleToStr(Profit, 2)+"$) / "
+"SL("+DoubleToStr(LossReal, 2)+"$) < "
+"PF("+DoubleToStr(ProfitFactor, 2)+")"
, "Îøèáêà", 0x00000000);
return(0);
}
// Âûâîä ìåññåäæáîêñà äëÿ ïðîâåðêè çíà÷åíèé è ïîäòâåðæäåíèÿ îòêðûòèÿ îðäåðà
if (ShowEdMessage) {Answer = MessageBox(
Operation+"\n"+
"------------------------------"+"\n"+
"Lots\t "+DoubleToStr(Lots, 2)+"\n"+
"SL\t "+DoubleToStr(LossReal, 2)+"$ "+"<"+DoubleToStr(Loss, 2)+"\n"+
"TP\t "+DoubleToStr(Profit, 2)+"$"+"\n"+
"------------------------------"+"\n"+
"SL\t "+DoubleToStr(sl,MarketInfo( Symbol(), MODE_DIGITS ))+" / "+
DoubleToStr(StopLossValue/PointSize, 0)+"ï"+"\n"+
"TP\t "+DoubleToStr(tp,MarketInfo( Symbol(), MODE_DIGITS ))+" / "+
DoubleToStr(TakeProfitValue/PointSize, 0)+"ï"+"\n"+
"TickValue\t "+DoubleToStr(TickValue*Lots, 2)+"$"+"\n"
, "Ïîäòâåðäèòå ...", 0x00000001 | 0x00000040 | 0x00040000 );
if ( Answer != 1) { deinit(); return(0); } // Åñëè íàæàòà ëþáàÿ êíîïêà êðîìå "ÎÊ" - âûõîäèì
}
// Îòêðûòèå ïîçèöèè
RefreshRates();
OpenPosition(NULL, Goto, Lots, sl, tp, MagicNumber);
}
//+----------------------------------------------------------------------------+
//| script program deinit function |
//+----------------------------------------------------------------------------+
int deinit() {
LinesDelete();
}
//+----------------------------------------------------------------------------+
//| Àâòîð : my.own.st@gmail.com |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 09.03.2010 |
//| Îïèñàíèå : Ñîçäàíèå ãîðèçîíòàëüíûõ ëèíèé ïðîôèòà è ñòîïà |
//+----------------------------------------------------------------------------+
void LinesCreate() {
ObjectCreate( "StopLossLine", OBJ_HLINE, 0, 0, Bid+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point, 0, 0, 0, 0 );
ObjectSet( "StopLossLine", OBJPROP_COLOR, StopLossLineColor );
ObjectSetText( "StopLossLine", "Ëèíèÿ ñòîïà", 6, "Arial", StopLossLineColor );
ObjectCreate( "TakeProfitLine", OBJ_HLINE, 0, 0, Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point, 0, 0, 0, 0 );
ObjectSet( "TakeProfitLine", OBJPROP_COLOR, TakeProfitLineColor );
ObjectSetText( "TakeProfitLine", "Ëèíèÿ ïðîôèòà", 6, "Arial", TakeProfitLineColor );
}
//+----------------------------------------------------------------------------+
//| Àâòîð : my.own.st@gmail.com |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 09.03.2010 |
//| Îïèñàíèå : Óäàëåíèå ãîðèçîíòàëüíûõ ëèíèé ïðîôèòà è ñòîïà |
//+----------------------------------------------------------------------------+
void LinesDelete() {
ObjectDelete( "StopLossLine");
ObjectDelete( "TakeProfitLine");
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 06.03.2008 |
//| Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//| ot - âðåìÿ îòêðûòèÿ ( 0 - ëþáîå âðåìÿ îòêðûòèÿ) |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
}
return(False);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.09.2005 |
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("BuyLimit");
case OP_SELLLIMIT: return("SellLimit");
case OP_BUYSTOP : return("BuyStop");
case OP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.09.2005 |
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òàéìôðåéìà |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| TimeFrame - òàéìôðåéì (êîëè÷åñòâî ñåêóíä) (0 - òåêóùèé ÒÔ) |
//+----------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) {
if (TimeFrame==0) TimeFrame=Period();
switch (TimeFrame) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("Daily");
case PERIOD_W1: return("Weekly");
case PERIOD_MN1: return("Monthly");
default: return("UnknownPeriod");
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.09.2005 |
//| Îïèñàíèå : Âûâîä ñîîáùåíèÿ â êîììåíò è â æóðíàë |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| m - òåêñò ñîîáùåíèÿ |
//+----------------------------------------------------------------------------+
void Message(string m) {
Comment(m);
if (StringLen(m)>0) Print(m);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 28.11.2006 |
//| Îïèñàíèå : Ìîäèôèêàöèÿ îäíîãî ïðåäâàðèòåëüíî âûáðàííîãî îðäåðà. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| pp - öåíà óñòàíîâêè îðäåðà |
//| sl - öåíîâîé óðîâåíü ñòîïà |
//| tp - öåíîâîé óðîâåíü òåéêà |
//| ex - äàòà èñòå÷åíèÿ |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl;
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
er=GetLastError();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 10.04.2008 |
//| Îïèñàíèå : Îòêðûâàåò ïîçèöèþ ïî ðûíî÷íîé öåíå. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà (NULL èëè "" - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ |
//| ll - ëîò |
//| sl - óðîâåíü ñòîï |
//| tp - óðîâåíü òåéê |
//| mn - MagicNumber |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
color clOpen;
datetime ot;
double pp, pa, pb;
int dg, err, it, ticket=0;
string lsComm=WindowExpertName()+" "+GetNameTF(Period());
if (sy=="" || sy=="0") sy=Symbol();
if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && IsStopped()) {
Print("OpenPosition(): Îñòàíîâêà ðàáîòû ôóíêöèè");
break;
}
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
dg=MarketInfo(sy, MODE_DIGITS);
pa=MarketInfo(sy, MODE_ASK);
pb=MarketInfo(sy, MODE_BID);
if (op==OP_BUY) pp=pa; else pp=pb;
pp=NormalizeDouble(pp, dg);
ot=TimeCurrent();
if (MarketWatch)
ticket=OrderSend(sy, op, ll, pp, Slippage, 0, 0, lsComm, mn, 0, CLR_NONE);
else
ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, CLR_NONE);
if (ticket>0) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
err=GetLastError();
if (pa==0 && pb==0) Message("Ïðîâåðüòå â Îáçîðå ðûíêà íàëè÷èå ñèìâîëà "+sy);
// Âûâîä ñîîáùåíèÿ îá îøèáêå
// Ìîé áëîê
Alert("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
// Êîíåö ìîåãî áëîêà
Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
" pp=",pp," sl=",sl," tp=",tp," mn=",mn);
// Áëîêèðîâêà ðàáîòû ñîâåòíèêà
if (err==2 || err==64 || err==65 || err==133) {
gbDisabled=True; break;
}
// Äëèòåëüíàÿ ïàóçà
if (err==4 || err==131 || err==132) {
Sleep(1000*300); break;
}
if (err==128 || err==142 || err==143) {
Sleep(1000*66.666);
if (ExistPositions(sy, op, mn, ot)) {
if (UseSound) PlaySound(NameFileSound); break;
}
}
if (err==140 || err==148 || err==4110 || err==4111) break;
if (err==141) Sleep(1000*100);
if (err==145) Sleep(1000*17);
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
if (err!=135) Sleep(1000*7.7);
}
}
if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
if (OrderSelect(ticket, SELECT_BY_TICKET)) ModifyOrder(-1, sl, tp);
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 17.03.2010 |
//| Îïèñàíèå : Âîçâðàùàåò: 1 - åñëè ïðèáûëü ïî âñåì îòêðûòûì îðäåðàì |
//| áîëüøå Limit èëè åñëè íåò îòêðûòûõ îðäåðîâ; |
//| 0 - åñëè ïðèáûëü ïî âñåì îðäåðàì ìåíüøå Limit; |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| Limit - ëèìèò ïðèáûëè äëÿ îòêðûòèÿ ñëåäóþùåé ïîçèöèè |
//+----------------------------------------------------------------------------+
bool AllOrdersProfit (double Limit) {
int total=OrdersTotal(); // Ïðèñâàèâàåì total ÷èñëî îòêðûòûõ îðäåðîâ
double Profit=0; // Ïðèáûëü ìåæäó ñòîïîì è îòêðûòèåì (ïðèìåð: 120$; -20$)
if (total>0) { // Ïðîâåðÿåì åñòü ëè îðäåð?
for(int i=total; i>=0; i--) { // Âûïîëíåíèå öèêëà, åñëè åñòü îäèí èëè áîëåå îòêðûòûõ îðäåðîâ è ïåðåáèðàåì èõ.
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { // Ïðîâåðÿåì ñðåäè îòêðûòûõ îðäåðîâ êðîìå îòëîæåííûõ, çàêðûòûõ èëè óäàëåííûõ
if (OrderType()==OP_BUY) { // Ïðîâåðÿåì ýòî îðäåð BUY
Profit=Profit+(OrderStopLoss()-OrderOpenPrice()) // Ïðèáûëü ïî îðäåðó ìåæäó ñòîïîì è îòêðûòèåì ñî çíàêîì
/MarketInfo(Symbol(),MODE_POINT)
*MarketInfo(Symbol(), MODE_TICKVALUE)
*OrderLots();
}
if (OrderType()==OP_SELL) { // Ïðîâåðÿåì ýòî îðäåð SELL
Profit=Profit+(OrderOpenPrice()-OrderStopLoss()) // Ïðèáûëü ïî îðäåðó ìåæäó ñòîïîì è îòêðûòèåì ñî çíàêîì
/MarketInfo(Symbol(),MODE_POINT)
*MarketInfo(Symbol(), MODE_TICKVALUE)
*OrderLots();
}
}
}
if (Profit>=Limit) return(1); // Ïðîâåðÿåì ïðèáûëü ïî âñåì îðäåðàì
else return(0);
}
else { // Åñëè íåò îòêðûòûõ îðäåðîâ
return(1);
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 17.03.2010 |
//| Îïèñàíèå : Âîçâðàùàåò: 1 - åñëè ëîêàëüíîå âðåìÿ áîëüøå StartTime è |
//| ìåíüøå FinishTime |
//| 0 - åñëè ëîêàëüíîå âðåìÿ íå ïîïàäàåò â èíòåðâàë |
//+----------------------------------------------------------------------------+
bool OpenInTimeGap (string StartTime, // âðåìÿ ñ
string FinishTime) // âðåìÿ ïî
{
if (TimeLocal()>=StrToTime(StartTime) && TimeLocal()<=StrToTime(FinishTime)) return(1);
else return(0);
}
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
---