Исходный код сова от Вовы Хлыстова
//+------------------------------------------------------------------+
//| Советник, выставляет 3 ордера по 3м валютам если по всем |
//| указанным парам нет открытых позиций. |
//| Может использоваться как скрипт |
//| Copyright © 2013, Khlistov Vladimir |
//|
http://cmillion.narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013, Khlistov Vladimir"
#property link "http://cmillion.narod.ru"
#property show_inputs
//+------------------------------------------------------------------+
extern string SYMBOL1 = "GBPUSD"; //первый символ, если не указан, то не выставляется
extern string SYMBOL2 = "EURUSD"; //второй символ, если не указан, то не выставляется
extern string SYMBOL3 = "EURGBP"; //третий символ, если не указан, то не выставляется
extern double LOT1 = 0.1; //лот первого инструмента
extern double LOT2 = 0.1; //лот второго инструмента
extern double LOT3 = 0.1; //лот третьего инструмента
extern int TYPE1 = OP_BUY; //тип ордера первого инструмента
extern int TYPE2 = OP_SELL; //тип ордера второго инструмента
extern int TYPE3 = OP_SELL; //тип ордера третьего инструмента
extern int stoploss = 10, //уровень выставления SL, если 0, то SL не выставляется
takeprofit = 10; //уровень выставления TP, если 0, то TP не выставляется
extern int Slippage = 3; //проскальзывание
extern int Magic = 777888;
//+------------------------------------------------------------------+
int start()
{
string s;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
s = OrderSymbol();
if (s==SYMBOL1 || s==SYMBOL2 || s==SYMBOL3) return(0);
}
}
int Digit=MarketInfo(SYMBOL1,MODE_DIGITS);
double Poin=MarketInfo(SYMBOL1,MODE_POINT);
double ASK=NormalizeDouble(MarketInfo(SYMBOL1,MODE_ASK),Digit);
double BID=NormalizeDouble(MarketInfo(SYMBOL1,MODE_BID),Digit);
double SL,TP;
if (SYMBOL1!="")
{
if (TYPE1 == OP_BUY)
{
if (stoploss!=0) SL = NormalizeDouble(BID - stoploss*Poin,Digit); else SL=0;
if (takeprofit!=0) TP = NormalizeDouble(ASK + takeprofit*Poin,Digit); else TP=0;
if (OrderSend(SYMBOL1,OP_BUY,LOT1,ASK,Slippage,SL,TP,"cm_script_Hedge",Magic,0,Blue)!=-1)
Alert("Ордер BUY лот ",LOT1," ", SYMBOL1);
else Alert(SYMBOL1," send order BAY error ",GetLastError()," ",MarketInfo(SYMBOL1,MODE_ASK)," ",LOT1);
}
if (TYPE1 == OP_SELL)
{
if (stoploss!=0) SL = NormalizeDouble(ASK + stoploss*Poin,Digit); else SL=0;
if (takeprofit!=0) TP = NormalizeDouble(BID - takeprofit*Poin,Digit); else TP=0;
if (OrderSend(SYMBOL1,OP_SELL,LOT1,BID,Slippage,SL,TP,"cm_script_Hedge",Magic,0,Blue)!=-1)
Alert("Ордер SELL лот ",LOT1," ", SYMBOL1);
else Alert(SYMBOL1," send order SELL error ",GetLastError()," ",MarketInfo(SYMBOL1,MODE_ASK)," ",LOT1);
}
}
if (SYMBOL2!="")
{
Digit=MarketInfo(SYMBOL2,MODE_DIGITS);
Poin=MarketInfo(SYMBOL2,MODE_POINT);
ASK=NormalizeDouble(MarketInfo(SYMBOL2,MODE_ASK),Digit);
BID=NormalizeDouble(MarketInfo(SYMBOL2,MODE_BID),Digit);
if (TYPE2 == OP_BUY)
{
if (stoploss!=0) SL = NormalizeDouble(BID - stoploss*Poin,Digit); else SL=0;
if (takeprofit!=0) TP = NormalizeDouble(ASK + takeprofit*Poin,Digit); else TP=0;
if (OrderSend(SYMBOL2,OP_BUY,LOT2,ASK,Slippage,SL,TP,"cm_script_Hedge",Magic,0,Blue)!=-1)
Alert("Ордер BUY лот ",LOT2," ", SYMBOL2);
else Alert(SYMBOL2," send order BAY error ",GetLastError()," ",MarketInfo(SYMBOL2,MODE_ASK)," ",LOT2);
}
if (TYPE2 == OP_SELL)
{
if (stoploss!=0) SL = NormalizeDouble(ASK + stoploss*Poin,Digit); else SL=0;
if (takeprofit!=0) TP = NormalizeDouble(BID - takeprofit*Poin,Digit); else TP=0;
if (OrderSend(SYMBOL2,OP_SELL,LOT2,BID,Slippage,SL,TP,"cm_script_Hedge",Magic,0,Blue)!=-1)
Alert("Ордер SELL лот ",LOT2," ", SYMBOL2);
else Alert(SYMBOL2," send order SELL error ",GetLastError()," ",MarketInfo(SYMBOL2,MODE_ASK)," ",LOT2);
}
}
if (SYMBOL3!="")
{
Digit=MarketInfo(SYMBOL3,MODE_DIGITS);
Poin=MarketInfo(SYMBOL3,MODE_POINT);
ASK=NormalizeDouble(MarketInfo(SYMBOL3,MODE_ASK),Digit);
BID=NormalizeDouble(MarketInfo(SYMBOL3,MODE_BID),Digit);
if (TYPE3 == OP_BUY)
{
if (stoploss!=0) SL = NormalizeDouble(BID - stoploss*Poin,Digit); else SL=0;
if (takeprofit!=0) TP = NormalizeDouble(ASK + takeprofit*Poin,Digit); else TP=0;
if (OrderSend(SYMBOL3,OP_BUY,LOT3,ASK,Slippage,SL,TP,"cm_script_Hedge",Magic,0,Blue)!=-1)
Alert("Ордер BUY лот ",LOT3," ", SYMBOL3);
else Alert(SYMBOL3," send order BAY error ",GetLastError()," ",MarketInfo(SYMBOL3,MODE_ASK)," ",LOT3);
}
if (TYPE3 == OP_SELL)
{
if (stoploss!=0) SL = NormalizeDouble(ASK + stoploss*Poin,Digit); else SL=0;
if (takeprofit!=0) TP = NormalizeDouble(BID - takeprofit*Poin,Digit); else TP=0;
if (OrderSend(SYMBOL3,OP_SELL,LOT3,BID,Slippage,SL,TP,"cm_script_Hedge",Magic,0,Blue)!=-1)
Alert("Ордер SELL лот ",LOT3," ", SYMBOL3);
else Alert(SYMBOL3," send order SELL error ",GetLastError()," ",MarketInfo(SYMBOL3,MODE_ASK)," ",LOT3);
}
}
return(0);
}
//--------------------------------------------------------------------
добавлено через 3 минуты
Что-то пошло не так.
Выглядеть должно было так(((
добавлено через 26 минут