Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
prostoi_sovetnik_1
//+------------------------------------------------------------------+
//| ñåðèÿ ïðîñòîé ñîâåòíèê |
//| Copyright © 2009, Õëûñòîâ Âëàäèìèð |
//| cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Õëûñòîâ Âëàäèìèð"
#property link "cmillion@narod.ru"
//--------------------------------------------------------------------
/*Ïðîäàæà: -Öåíà íèæå MA (æåëàòåëüíî âîçìîæíîñòü íàñòðîèòü ïàðàìåòðû)
-MACD ïåðåñåêàåòíóëåâóþ ëèíèþ ñâåðõó âíèç (ïîñëå çàêðûòèÿ áàðà, îí ñòàíîâèòüñÿ ñèãíàëüíûì)(æåëàòåëüíû íàñòðîéêè ïàðàìåòðîâ MACD)
-Ïðîäàæà îñóùåñòâëÿåòñÿ ïîñëå ïðîáèòèÿ ìèíèìóìà ñôîðìèðîâàâøåãîñÿ ñèãíàëüíîãî áàðà
-ÑòîïËîññ ñòàâèòüñÿ çà ìàêñèìóìîì ñèãíàëüíîãî áàðà (íî íå áîëüøå 60ï)
-Òåéê +100 ïï(íàñòðîéêè íå ïîìåøàþò)
-Òðåéëèíã ñòîï. Ïðè äîñòèæåíèè ïðîôèòà +50(æåëàòåëüíî íàñòðîéêè), ñòîï â áåçóáûòîê è äàëåå îáû÷íûé ñëåäÿùèé ñòîï (ñ âîçìîæíîñòüþ â íàñòðîéêàõ îòêëþ÷èòü åãî)
-Çàêðûòèå ïîçèöèè. Åñëè MACD ïåðåñåêàåò íóëåâóþ ëèíèþ îáðàòíî*/
//--------------------------------------------------------------------
extern string ïàðàìåòðû.ÌÀ = "";
extern int period_MA = 100, //Ïåðèîä óñðåäíåíèÿ äëÿ âû÷èñëåíèÿ ñêîëüçÿùåãî ñðåäíåãî.
ma_method = MODE_SMA, //Ìåòîä óñðåäíåíèÿ. Ìîæåò áûòü ëþáûì èç çíà÷åíèé ìåòîäîâ ñêîëüçÿùåãî ñðåäíåãî (Moving Average).
applied_price_ÌÀ = PRICE_CLOSE; //Èñïîëüçóåìàÿ öåíà. Ìîæåò áûòü ëþáîé èç öåíîâûõ êîíñòàíò.
extern string ïàðàìåòðû.ÌÀCD = "";
extern int fast_ema_period = 12, //Ïåðèîä óñðåäíåíèÿ äëÿ âû÷èñëåíèÿ áûñòðîé ñêîëüçÿùåé ñðåäíåé.
slow_ema_period = 26, //Ïåðèîä óñðåäíåíèÿ äëÿ âû÷èñëåíèÿ ìåäëåííîé ñêîëüçÿùåé ñðåäíåé.
signal_period = 9, //Ïåðèîä óñðåäíåíèÿ äëÿ âû÷èñëåíèÿ ñèãíàëüíîé ëèíèè.
applied_price_ÌÀCD = PRICE_CLOSE; //Èñïîëüçóåìàÿ öåíà. Ìîæåò áûòü ëþáîé èç öåíîâûõ êîíñòàíò.
extern string ïàðàìåòðû.ñîâåòíèêà = "";
extern int MAXstoploss = 60,
takeprofit = 100,
TrailingStop = 50,
Magic = 123, //óíèêàëüíûé íîìåð îðäåðîâ ýòîãî ñîâåòíèêà, åñëè 0 òî âåäåò âñå îðäåðà, â òîì ÷èñëå âûñòàâëåííûå âðó÷íóþ
slippage = 3; //Ìàêñèìàëüíî äîïóñòèìîå îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ
extern double Lot = 0.1;
extern string comment = "cmillion@narod.ru";
//--------------------------------------------------------------------
int start()
{
bool b,s;
int tip;
for (int j=0; j<OrdersTotal(); j++)
{ if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==true)
{ if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())
{
tip = OrderType();
if (tip==OP_BUY ) b=1;
if (tip==OP_SELL) s=1;
}
}
}
int STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if ((b>0||s>0)&&TrailingStop>=STOPLEVEL) TrailingStop(TrailingStop);
double MA = iMA(NULL,0,period_MA,ma_method,ma_method,applied_price_ÌÀ,0);
double MACD0 = iMACD(NULL,0,fast_ema_period,slow_ema_period,signal_period,applied_price_ÌÀCD,MODE_MAIN,1);
double MACD1 = iMACD(NULL,0,fast_ema_period,slow_ema_period,signal_period,applied_price_ÌÀCD,MODE_MAIN,2);
double SL,TP;
if (MACD1<0&&MACD0>0) CLOSEORDER(-1);
if (MACD1>0&&MACD0<0) CLOSEORDER(1);
if (MA<Bid&&MACD1<0&&MACD0>0&&!b&&Bid>High[1])
{
if (takeprofit>=STOPLEVEL) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (MAXstoploss >=STOPLEVEL)
{
if (NormalizeDouble((Bid-Low[1])/Point,Digits)>MAXstoploss) SL = NormalizeDouble(Bid - MAXstoploss*Point,Digits);
else if (NormalizeDouble((Bid-Low[1])/Point,Digits)>=STOPLEVEL) SL = NormalizeDouble(Low[1],Digits);
}
OPENORDER (1,SL,TP);
}
if (MA>Ask&&MACD1>0&&MACD0<0&&!s&&Ask<Low[1])
{
if (takeprofit>=STOPLEVEL) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (MAXstoploss>=STOPLEVEL)
{
if (NormalizeDouble((High[1]-Ask)/Point,Digits)>MAXstoploss) SL = NormalizeDouble(Ask + MAXstoploss*Point,Digits);
else if (NormalizeDouble((High[1]-Ask)/Point,Digits)>=STOPLEVEL) SL = NormalizeDouble(High[1],Digits);
}
OPENORDER (-1,SL,TP);
}
return(0);
}
//--------------------------------------------------------------------
bool OPENORDER(int ord,double SL,double TP)
{
int error,err;
while (true)
{ error=true;
if (ord== 1) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,comment,Magic,0,Blue);
if (ord==-1) error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,comment,Magic,0,Red);
if (error==-1)
{
Print("===> OPENORDER Error ",GetLastError());
err++;Sleep(2000);RefreshRates();
}
else return(1);
if (err >10) return(0);
}
return;
}
//--------------------------------------------------------------------
bool CLOSEORDER(int ord)
{
bool error;
int err;
double profit;
while (true)
{ error=true;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
profit = OrderProfit()+OrderSwap()+OrderCommission();
if (OrderType()==OP_BUY && ord>-1)
{
error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue);
if (!error) {Print("===> CLOSEORDER Error ",GetLastError()," ",OrderTicket());continue;}
else Alert("===> CLOSEORDER ",OrderTicket()," ïðèáûëü ",profit);
}
if (OrderType()==OP_SELL && ord<1)
{
error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red);
if (!error) {Print("===> CLOSEORDER Error ",GetLastError()," ",OrderTicket());continue;}
else Alert("===> CLOSEORDER ",OrderTicket()," ïðèáûëü ",profit);
}
}
}
}
if (!error) {err++;Sleep(2000);RefreshRates();}
if (error || err >= 10) return(error);
}
}
//--------------------------------------------------------------------
void TrailingStop(int tral)
{
int tip,Ticket;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip==OP_BUY)
{
StLo = NormalizeDouble(Bid - tral*Point,Digits);
if (StLo > OSL && StLo > OOP)
if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White)) Print("===> TrailingStop Error ",GetLastError()," Order buy ",Ticket," Price ",OOP," SL ",OSL,"->",StLo);
else Print("===> TrailingStop Order sell ",Ticket," Price ",OOP," SL ",OSL,"->",StLo);
}
if (tip==OP_SELL)
{
StLo = NormalizeDouble(Ask + tral*Point,Digits);
if (StLo <= OOP && (StLo < OSL || OSL==0))
if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White)) Print("===> TrailingStop Error ",GetLastError()," Order sell ",Ticket," Price ",OOP," SL ",OSL,"->",StLo);
else Print("===> TrailingStop Order sell ",Ticket," Price ",OOP," SL ",OSL,"->",StLo);
}
}
}
}
}
//--------------------------------------------------------------------
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
---