Tâche terminée
Temps d'exécution 23 heures
Spécifications
Здравствуйте, нужен скрипт который запускает автоматические сделки по заданным параметрам на мт4 вот пример
//+------------------------------------------------------------------+
//| ExpDualOrders_v1.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
//----
input int StartType =1; //0-старт BUY, 1-старт SELL
input int TypeCloseBuyTake =0; //0-BUY после Take BUY, 1-SELL после Take BUY
input int TypeCloseBuyLoss =1; //0-BUY после Loss BUY, 1-SELL после Loss BUY
input int TypeCloseSellTake =1; //0-BUY после Take SELL, 1-SELL после Take SELL
input int TypeCloseSellLoss =0; //0-BUY после Loss SELL, 1-SELL после Loss SELL
input double LotsBuy =2.0; //лот ордера BUY
input int StopLossBuy =100; //StopLoss ордера BUY
input int TakeProfitBuy =150; //TakeProfit ордера BUY
input double LotsSell =1.0; //лот ордера SELL
input int StopLossSell =100; //StopLoss ордера SELL
input int TakeProfitSell =150; //TakeProfit ордера SELL
input int Magic =12345; //Magic
//----
MqlTick str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//----
//----первоначальное открытие ордера BUY
if(StartType==0)
if(FindLastOrderTradeType(-1)==false)
if(FindLastOrderHistoryType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----первоначальное открытие ордера SELL
if(StartType==1)
if(FindLastOrderTradeType(-1)==false)
if(FindLastOrderHistoryType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера BUY закрытого по Take
if(TypeCloseBuyTake==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера BUY закрытого по Take
if(TypeCloseBuyTake==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера BUY закрытого по Loss
if(TypeCloseBuyLoss==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера BUY закрытого по Loss
if(TypeCloseBuyLoss==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера SELL закрытого по Take
if(TypeCloseSellTake==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера SELL закрытого по Take
if(TypeCloseSellTake==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера SELL закрытого по Loss
if(TypeCloseSellLoss==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера SELL закрытого по Loss
if(TypeCloseSellLoss==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool FindLastOrderTradeType(int order_type)
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
if(OrderSelect(pos,SELECT_BY_POS)==true)
if(OrderMagicNumber()==Magic)
if(OrderSymbol()==_Symbol)
if(OrderType()==order_type
|| order_type==-1)
return(true);
//----
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool FindLastOrderHistoryType(int order_type)
{
for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
if(OrderMagicNumber()==Magic)
if(OrderSymbol()==_Symbol)
if(OrderType()==order_type
|| order_type==-1)
return(true);
//----
return(false);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ExpDualOrders_v1.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
//----
input int StartType =1; //0-старт BUY, 1-старт SELL
input int TypeCloseBuyTake =0; //0-BUY после Take BUY, 1-SELL после Take BUY
input int TypeCloseBuyLoss =1; //0-BUY после Loss BUY, 1-SELL после Loss BUY
input int TypeCloseSellTake =1; //0-BUY после Take SELL, 1-SELL после Take SELL
input int TypeCloseSellLoss =0; //0-BUY после Loss SELL, 1-SELL после Loss SELL
input double LotsBuy =2.0; //лот ордера BUY
input int StopLossBuy =100; //StopLoss ордера BUY
input int TakeProfitBuy =150; //TakeProfit ордера BUY
input double LotsSell =1.0; //лот ордера SELL
input int StopLossSell =100; //StopLoss ордера SELL
input int TakeProfitSell =150; //TakeProfit ордера SELL
input int Magic =12345; //Magic
//----
MqlTick str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//----
//----первоначальное открытие ордера BUY
if(StartType==0)
if(FindLastOrderTradeType(-1)==false)
if(FindLastOrderHistoryType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----первоначальное открытие ордера SELL
if(StartType==1)
if(FindLastOrderTradeType(-1)==false)
if(FindLastOrderHistoryType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера BUY закрытого по Take
if(TypeCloseBuyTake==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера BUY закрытого по Take
if(TypeCloseBuyTake==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера BUY закрытого по Loss
if(TypeCloseBuyLoss==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера BUY закрытого по Loss
if(TypeCloseBuyLoss==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_BUY)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера SELL закрытого по Take
if(TypeCloseSellTake==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера SELL закрытого по Take
if(TypeCloseSellTake==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"tp",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
//----
//----открытие ордера BUY после ордера SELL закрытого по Loss
if(TypeCloseSellLoss==0)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.ask-StopLossBuy*_Point;
double tp=str.ask+TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_BUY,LotsBuy,str.ask,slip,sl,tp,"",Magic,0,clrBlue)>0)
{}
}
//----
//----открытие ордера SELL после ордера SELL закрытого по Loss
if(TypeCloseSellLoss==1)
if(FindLastOrderHistoryType(-1)==true)
if(OrderType()==OP_SELL)
if(StringFind(OrderComment(),"sl",0)>=0)
if(FindLastOrderTradeType(-1)==false)
if(SymbolInfoTick(_Symbol,str)==true)
{
int slip=int((str.ask-str.bid)/_Point);
double sl=str.bid+StopLossBuy*_Point;
double tp=str.bid-TakeProfitBuy*_Point;
//----
if(OrderSend(_Symbol,OP_SELL,LotsSell,str.bid,slip,sl,tp,"",Magic,0,clrRed)>0)
{}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool FindLastOrderTradeType(int order_type)
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
if(OrderSelect(pos,SELECT_BY_POS)==true)
if(OrderMagicNumber()==Magic)
if(OrderSymbol()==_Symbol)
if(OrderType()==order_type
|| order_type==-1)
return(true);
//----
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool FindLastOrderHistoryType(int order_type)
{
for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
if(OrderMagicNumber()==Magic)
if(OrderSymbol()==_Symbol)
if(OrderType()==order_type
|| order_type==-1)
return(true);
//----
return(false);
}
//+------------------------------------------------------------------+
22:07
BUY - купить
SELL - продать
StopLoss - СЛ
TakeProfit - ТП
1)Открываем лот BUY-1 задаем в скрипте ТП и СЛ и сумму лота(например1)
Если ТП снова открываем лот BUY-1
2)Если СЛ открываем лот SELL-1 в скрипте задаем ТП и СЛ и сумму лота(например1)
Если ТП снова открываем лот BUY-1
3)Если СЛ Открываем лот BUY-2 задаем в скрипте ТП и СЛ и сумму лота(например1)
Если ТП снова открываем лот BUY-1
4)Если СЛ открываем лот SELL-3 в скрипте задаем ТП и СЛ и сумму лота(например1)
Если ТП снова открываем лот BUY-1
И так далее BUY-4 , SELL-5 , BUY-6 и т.д по такому алгоритму сколько угодно строк. Всегда Если ТП то алгоритм начинается по новой.
Répondu
1
Évaluation
Projets
136
45%
Arbitrage
11
27%
/
64%
En retard
26
19%
Gratuit
2
Évaluation
Projets
1433
62%
Arbitrage
21
57%
/
10%
En retard
43
3%
Gratuit
3
Évaluation
Projets
705
49%
Arbitrage
57
16%
/
49%
En retard
129
18%
Gratuit
Informations sur le projet
Budget
40- USD
Délais
à 5 jour(s)