Orders Execution
0
Views
0
Downloads
0
Favorites
SendOrderNDD
//+------------------------------------------------------------------+
//| Version1.mq4 |
//| VadimVP |
//| poluyan@fxmail.ru |
//+------------------------------------------------------------------+
#property copyright "VadimVP"
#property link "poluyan@fxmail.ru"
#include <WinUser32.mqh>
/* /+------------------------------------------------------------------+
Ñêðèïò ïîìîãàåò îòêðûòü îðäåð "ñ ðûíêà" ïðè ýòîì àâòîìàòè÷åñêè ðàñ÷èòûâàåò ðàçìåð ëîòà
â ñîîòâåòñòâèè ñ óñòàíîâëåííûì Âàìè óðîâíåì óáûòêà (â ïðîöåíòàõ îò äåïîçèòà), îòêðûâàåò îðäåð è
óñòàíàâëèâàåò StopLoss è TakeProfit.
Âû ïåðåìåùàåòå ëèíèþ StopLoss (êðàñíàÿ ìèãàþùàÿ ëèíèÿ) - ñîâåòíèê òóò æå ïåðåñ÷èòûâàåò ðàçìåð ëîòà
ïîä çàäàííûé óáûòîê Âàìè % óáûòêà, è êîððåêòèðóåò ðàñïîëîæåíèå TakeProfit (ñèíÿÿ ìèãàþùàÿ ëèíèÿ).
Ðàçìåð óáûòêà (â %) ìîæíî èçìåíÿòü ïðÿìî íà ãðàôèêå ïåðåìåùàÿ êðàñíóþ ñòðåëêó ââåðõ-âíèç.
Ëèíèÿ TakeProfit ðàçìåùàåòñÿ àâòîìàòè÷åñêè íà òîì æå óäàëåíèè îò öåíû ÷òî è StopLoss íî óìíîæåííàÿ íà
êîýôôèöèåíò kProfitLine.
×òîáû óñòàíîâèòü îðäåð - óäàëèòå êðàñíóþ ìèãàþùóþ ëèíèþ (ëèíèÿ StopLoss).
+------------------------------------------------------------------+
*/
// Ïàðàìåòðû ñîâåòíèêà:
double LOSSmin = 3;// ìèíèìàëüíûé ïðîöåíò óáûòêà (äèàïàçîí èçìåíåíèé, íèæíèé ïðåäåë)
double LOSSmax = 20;// ìàêñèìàëüíûé ïðîöåíò óáûòêà (äèàïàçîí èçìåíåíèé, âåðõíèé ïðåäåë)
double MaxLot = 0.6;// ìàêñèìàëüíî ðàçðåøåííûé Âàìè ëîò äëÿ îðäåðà
double kProfitLine = 1.25;// îòíîøåíèå ïðèáûëè ê óáûòêó, êîýôôèöèåíò TakeProfit = kProfitLine * TrailingStop
color clrOK = Blue; // Öâåò øðèôòà OK
color clrNO = Red; // Öâåò øðèôòà NOT OK
int font = 11; // Ðàçìåð øðèôòà
//-------------------------------------------------------------------+
// Ôîðìóëà êîððåêöèè % ïðîôèòà Ïðèáûëü(%) = ( 100 / ( (100 - Óáûòîê)/100) ) - 100; (â %) ìîæíî ïðèìåíèòü åñëè ñòîï îò 5% äåïîçèòà è âûøå
double PFL; color clr; double DilerPercent = 0;
int iii = 0; double STL = 0; double LOT = 0; double deltareal=1; double LOSS = 0.1;
int init()
{linebye();return(0);}
int deinit()
{Comment (" ");ObjectDelete ("10");ObjectDelete ("123");ObjectDelete( "ProfitLineNDD");ObjectDelete ("321");ObjectDelete( "StopLineNDD");return(0); }
int start()
{
//----
if (IsConnected()) {
while ( ObjectFind("StopLineNDD")!=(-1) )
{if (ObjectFind("StopLineNDD") == (-1)) {linebye();}
if (ObjectFind("123") == (-1)) {ObjectCreate ("123",OBJ_TEXT,0,Time[WindowBarsPerChart( )/3] ,WindowPriceMax() - (WindowPriceMax() - WindowPriceMin())/10 );
ObjectSetText("123", "Ñòàðò ñêðèïòà", font, "Arial", clr);}
if (ObjectFind("321") == (-1)) {ObjectCreate ("321",OBJ_ARROW,0,Time[WindowBarsPerChart( )/2] ,WindowPriceMin()+((WindowPriceMax() - WindowPriceMin())/10) );
ObjectSet("321", OBJPROP_ARROWCODE, 231); ObjectSet("321", OBJPROP_WIDTH, 2); }
STL = ObjectGet("StopLineNDD", 1); textset(); DrowProfitLine();
if (iii == 5) {Sleep (30); ObjectSet( "StopLineNDD", 6, Red); ObjectSet( "ProfitLineNDD", 6, Blue); WindowRedraw( ) ;} else Sleep (30);
if (iii == 10) {Sleep (30); ObjectSet( "StopLineNDD", 6, PeachPuff);ObjectSet( "ProfitLineNDD", 6, LightBlue); WindowRedraw( ) ;} else Sleep (30);
if (iii >= 10) iii = 0; iii = iii+1;
}
//-----------------------------------
ObjectCreate( "StopLineNDD", OBJ_HLINE, 0, 0, STL); ObjectSet( "StopLineNDD", 6, Red);
ObjectSet( "StopLineNDD", 8, 3);WindowRedraw( );
if (MessageBox (" Îòêðûòü îðäåð ??? ","Ñêðèïò èíòåðåñóåòñÿ:",1)==1) startset();
} else MessageBox ("Íåò ñîåäèíåíèÿ ñ ñåðâåðîì!!!"," Ñêðèïò ñîîáùàåò:",0x00000000);
//----
return(0);
}
//+------------------------------------------------------------------+
int linebye() {// Ðèñóåì ëèíèþ (êîòîðàÿ ìèãàåò)
ObjectDelete( "StopLineNDD");
ObjectCreate( "StopLineNDD", OBJ_HLINE, 0, 0, (MarketInfo( Symbol(), MODE_BID) -Point*((MarketInfo(Symbol(), MODE_STOPLEVEL)+10*MathPow(10,Digits)/10000 ))) );
ObjectSet( "StopLineNDD", 6, White); ObjectSet( "StopLineNDD", 8, 2); WindowRedraw( ) ;
return(0); }
//+------------------------------------------------------------------+
double textset() {
double delta = WindowPriceMax() - WindowPriceMin();
double PriceMax = WindowPriceMax() - delta/10;
double PriceMin = delta/10 + WindowPriceMin();
if (ObjectGet("321", 1) > PriceMax) ObjectSet("321",1,PriceMax);
if (ObjectGet("321", 1) < PriceMin) ObjectSet("321",1,PriceMin);
double deltascreen = PriceMax - PriceMin;
LOSS = (((ObjectGet("321", 1)-PriceMin)/deltascreen)*(LOSSmax - LOSSmin))+LOSSmin;
if (STL > (MarketInfo( Symbol(), MODE_ASK) + Point*MarketInfo(Symbol(), MODE_STOPLEVEL))) deltareal = (STL - MarketInfo( Symbol(), MODE_BID) )/Point;
if (STL < (MarketInfo( Symbol(), MODE_BID) - Point*MarketInfo(Symbol(), MODE_STOPLEVEL))) deltareal = (MarketInfo( Symbol(), MODE_ASK) - STL)/Point;
LOT = ((AccountFreeMargin()*(LOSS/100))/MarketInfo(Symbol(), MODE_TICKVALUE))/deltareal;
LOT = Round(LOT);
double LOSSreal = (LOT*deltareal*MarketInfo(Symbol(), MODE_TICKVALUE)/AccountFreeMargin())*100;
if (MathAbs(LOSS-LOSSreal) < MathAbs(LOSS*0.1)) clr = clrOK; else clr = clrNO;//ìåíÿåì öâåò øðèôòà
ObjectSetText("123","Çàäà÷à:LOSS="+DoubleToStr(LOSS,1)+" % "+"; Ïîëó÷èì:LOT="+DoubleToStr(LOT,2)+", LOSS="+DoubleToStr(LOSSreal,2)+"% (Ñïðåä="+ DoubleToStr(DilerPercent*100,1)+"%)", font, "Arial", clr);
WindowRedraw( ) ;
Comment ( "Ñóììà âîçìîæíîãî óáûòêà = "+DoubleToStr(AccountFreeMargin()*LOSSreal/100,0));
return(0); }
int startset() {
//-----
Alert ("!!! Ïîæàëóéñòà äîæäèòåëü îêîí÷àíèÿ ðàáîòû ñêðèïòà!");
int resi = 0;
STL = MathRound (STL * MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS)) );
STL = STL / MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS));
PFL = MathRound (PFL * MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS)) );
PFL = PFL / MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS));
Print("ëèíèè Ñòîïîâ, Öåíû Îòêðûòèÿ è Ïðîôèòà : ",STL," , ",MarketInfo( Symbol(), MODE_BID)," , ",PFL);
if (STL>MarketInfo( Symbol(), MODE_ASK) ) resi = OrderSend (Symbol(),OP_SELL,LOT, MarketInfo( Symbol(), MODE_BID) , 10, 0, 0 );
if (STL<MarketInfo( Symbol(), MODE_BID) ) resi = OrderSend (Symbol(),OP_BUY,LOT, MarketInfo( Symbol(), MODE_ASK) , 10, 0, 0 );
Alert ("***************************************************");
if (resi == (-1))
Alert ("!!! Íåóäà÷íîå îòêðûòèå îðäåðà! Ïîâòîðèòå ïîïûòêó! Îøèáêà ¹: "+GetLastError());
else {Alert ("Îðäåð îòêðûò óñïåøíî, ðåçóëüòàò : "+resi);
Alert (" Ïîäîæäèòå íåìíîãî, ñåé÷àñ ïîñòàâëþ ñòîïû ");
Sleep (200);
// òóò íóæíî ôóíêöèþ âñòðÿïàòü, íî ïîêà ÷òî ïðîñòî äâå ëèíèè ðèñóþ.
if(OrderSelect(resi, SELECT_BY_TICKET)==true)
{if (!OrderModify(resi,OrderOpenPrice(),STL,PFL,0,Blue))
{ ObjectCreate( "1NDD_Stop", OBJ_HLINE, 0, 0, STL);
ObjectCreate( "2NDD_Profit", OBJ_HLINE, 0, 0, PFL);
WindowRedraw( );
Alert ("Óðîâíè ñòîïîâ îáîçíà÷åíû ëèíèÿìè!!! ");
Alert (" ÍÅ ÓÄÀËÎÑÜ ÏÎÑÒÀÂÈÒÜ ÑÒÎÏÛ!!! ");
}
}
else Alert (" Ñòîïû ïîñòàâèë óäà÷íî. ");
}
Alert ("************ èíôîðìàöèÿ îò ñêðèïòà ************");
return(0); }
void DrowProfitLine()
{
// ObjectDelete( "ProfitLineNDD");
if (ObjectFind("ProfitLineNDD") == (-1)){
ObjectCreate( "ProfitLineNDD", OBJ_HLINE, 0, 0, (MarketInfo( Symbol(), MODE_ASK) +Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL))) );
ObjectSet( "ProfitLineNDD", 6, Blue); ObjectSet( "ProfitLineNDD", 8, 2); WindowRedraw( ) ;}
if (STL > (MarketInfo( Symbol(), MODE_ASK) +Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL)))) {PFL = MarketInfo( Symbol(), MODE_BID) - ((STL-MarketInfo( Symbol(), MODE_BID) )*kProfitLine );
DilerPercent = (MarketInfo( Symbol(), MODE_ASK) - MarketInfo( Symbol(), MODE_BID)) / (STL-MarketInfo( Symbol(), MODE_BID) ); }
if (STL < (MarketInfo( Symbol(), MODE_BID) -Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL)))) {PFL = MarketInfo( Symbol(), MODE_ASK) + ((MarketInfo( Symbol(), MODE_ASK) -STL)*kProfitLine );
DilerPercent =(MarketInfo( Symbol(), MODE_ASK) - MarketInfo( Symbol(), MODE_BID)) / (MarketInfo( Symbol(), MODE_ASK) -STL); }
if (STL > (MarketInfo( Symbol(), MODE_BID) -Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL))) && STL < (MarketInfo( Symbol(), MODE_ASK) +Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL)))) ObjectDelete( "ProfitLineNDD");
ObjectSet( "ProfitLineNDD", 1, PFL );
WindowRedraw( ) ;
}
double Round(double A1) // Ôóíêöèÿ îêðóãëÿåò À1 äî Øàãà Ëîòà è ïðîâåðÿåò íèæíþþ ãðàíèöó è âåðõíèå ãðàíèöû
{
A1 = MathRound (A1 / MarketInfo(Symbol(), MODE_LOTSTEP));
A1 = A1 * MarketInfo(Symbol(), MODE_LOTSTEP);
if (A1 < MarketInfo(Symbol(), MODE_MINLOT)) A1 = MarketInfo(Symbol(), MODE_MINLOT);
if (A1 > MaxLot) A1 = MaxLot;
if (A1 > (AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED))) A1 = (AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)); //ñðåäñòâà äëÿ îòêðûòèÿ 1 ëîòà
return(A1);
}
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
---