Здравствуйте, очень прошу доработать двух советников! А именно добавить в них функцию Мартингейла с возможностью изменения множителя лота, также функцией открытия ордера обЪемом от баланса или постоянным размером и отключения данных функций вовсе. За ранее СПАСИБО!
ВОТ собственно коды советников:
Первый советник:
//+------------------------------------------------------------------+
//| BrickWalker3.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
extern double LOT=0.1; // Размер торгуемого лота
extern int Trend=0; // 0-не торгует, 1-только sell, 2-только buy, 3-sell и buy
extern int Диапазон=5; // не открывает новые ордера, если в этом диапазоне уже есть открытые ордера
extern bool MM=false; // true-размер ордера зависит от эквити, false-размер ордера постоянный = LOT
extern double Risk =0.5; // расчитывается по формуле: AccountEquity*Risk/100000
extern int SL=0; // Размер фиксированного стопа
extern int TP=0; // Размер фиксированного тэйка
extern bool Скрыть_SL_TP=false;
extern int Slip=30; // Проскальзывание цены
extern int Баров_для_входа=1; // число баров для анализа
extern int Баров_для_выхода=100; // число баров для анализа
extern int Количество_ордеров=50;// максимально допустимое количество открытых ордеров
extern int Filter=0; // 0 - не использовать фильтры, 1 - фильтр 4D-RangeSwitch, 2 - фильтр Waddah Attar Explosion, 3 - два фильтра одновременно.
extern int Sensetive=150;
extern int Spred=3; // максимально допустимый спред во время открытия ордера
extern bool Закрывать_ордера_в_пятницу=false;
extern int Время_закрытия_в_пятницу=20;
extern bool Использ_трал=false; // вкл/выкл трала
extern double TrailingStart=100; // расстояние начала трала
extern int TrailingStop=100; // Фиксированный размер трала
extern int TrailingStep=100; // Шаг трала
extern bool реверс=false; // открывает противоположные ордера: sell>buy, buy>sell
extern double SumProfit=1000; // сумма профита для закрытия всех ордеров
extern int ReversProfit=0; // 0 - не использовать
// 1 - закрывать все ордера, положительные и отрицательные, при появлении противоположного сигнала
// 2 - закрывать все только ПОЛОЖИТЕЛЬНЫЕ ордера при появлении противоположного сигнала, а отрицательные оставлять открытыми
extern string Coment="100"; // комментарий к ордерам
extern int Magic=100; // магик ордера
extern bool UseSound = True; // Использовать звуковой сигнал
extern string SoundSuccess = "expert.wav"; // Звук успеха
extern string SoundError = "timeout.wav"; // Звук ошибки
color clCloseBuy = Lime; // Цвет значка закрытия покупки
color clCloseSell = Red; // Цвет значка закрытия продажи
static int бар=0;
double pp,pm,Profit,drange,Wadahgreen,Wadahred,Wadahyellov;int Nb=1;int Ns=1;int hWindow=0;
int oldBars=0;
int signbuy,signsell,closebuy,closesell,g,nsell,nbuy,BUY,SELL,SPREAD;datetime timeopen;
#include <stdlib.mqh>
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
hWindow=WindowHandle(Symbol(),Period());
oldBars=Bars; // we need that for
//----
бар=Time[0];
Sleep(10000);
//----
ObjectDelete("состояние"); ObjectDelete("magic");ObjectDelete("Profit");
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
//--------------------------------------------------------------------
{
if(Digits<4)
pp=0.01;
else
pp=0.0001;
if(Digits==4 || Digits==2)pm=1;
else pm=10;
SPREAD=MarketInfo(Symbol(),MODE_SPREAD)/pm;
double lotdigits;
double maxLot=MarketInfo(Symbol(),MODE_MAXLOT);
double minLot=MarketInfo(Symbol(),MODE_MINLOT);
double lotstep=MarketInfo(Symbol(),MODE_LOTSTEP);
if(lotstep==0.01)lotdigits=2;
if(lotstep==0.1)lotdigits=1;
if(lotstep==1)lotdigits=0;
if(MM==true)
LOT=NormalizeDouble(AccountEquity() *Risk/10000/10,lotdigits);
if(LOT > maxLot) LOT = maxLot;
if(LOT < minLot) LOT = minLot;
int n=CountTrades();
Modif();
string txt="no trade";
if(Trend==1)txt="only sell"+"("+SELL+")";
if(Trend==2)txt="only buy"+"("+BUY+")";
if(Trend>=3)txt="sell"+"("+SELL+")"+" &"+" buy"+"("+BUY+")";
if(Использ_трал==true)
Tral();
if(Profit>SumProfit)ClosePosFirstProfit(Symbol(),-1,Magic);
if(ObjectFind("Profit")==-1)
{
ObjectCreate("Profit",OBJ_LABEL,0,0,1);
ObjectSet("Profit",OBJPROP_CORNER,3);
ObjectSet("Profit",OBJPROP_XDISTANCE,15);
ObjectSet("Profit",OBJPROP_YDISTANCE,10);
}
ObjectSetText("Profit","Profit: "+DoubleToStr(Profit,2),11,"Courier New",Yellow);
if(ObjectFind("состояние")==-1)
{
ObjectCreate("состояние",OBJ_LABEL,0,0,1);
ObjectSet("состояние",OBJPROP_CORNER,3);
ObjectSet("состояние",OBJPROP_XDISTANCE,15);
ObjectSet("состояние",OBJPROP_YDISTANCE,30);
}
ObjectSetText("состояние",txt,11,"Courier New",Yellow);
if(ObjectFind("magic")==-1)
{
ObjectCreate("magic",OBJ_LABEL,0,0,1);
ObjectSet("magic",OBJPROP_CORNER,3);
ObjectSet("magic",OBJPROP_XDISTANCE,15);
ObjectSet("magic",OBJPROP_YDISTANCE,50);
}
ObjectSetText("magic","Magic: "+Magic,11,"Courier New",Yellow);
//робота по открыт. бара
if(Time[0]==бар)
{Sleep(50);return(0);}
drange=iCustom(NULL,0,"4D - Range Switch",0,1);
Wadahgreen=iCustom(NULL,0,"Waddah_Attar_Explosion",0,Sensetive,15,15,15,0,1);
Wadahred=iCustom(NULL,0,"Waddah_Attar_Explosion",0,Sensetive,15,15,15,1,1);
Wadahyellov=iCustom(NULL,0,"Waddah_Attar_Explosion",0,Sensetive,15,15,15,2,0);
Comment(Wadahyellov);
бар=Time[0];
int signal_выхода=Проверка_условий_выхода();
if(signal_выхода==3)ClosePosFirstProfit(Symbol(), OP_BUY, Magic);
if(signal_выхода==4)ClosePosFirstProfit(Symbol(), OP_SELL, Magic);
if(Закрывать_ордера_в_пятницу==true && ((DayOfWeek()==5 && Hour()>=Время_закрытия_в_пятницу) || DayOfWeek()>=6))
{ClosePosFirstProfit(Symbol(),-1,Magic);return(0); }
int signal_входа=Проверка_условий_входа();
int nnb=0;int mb=-1;int nns=0;int ms=-1;
if((Wadahgreen>Wadahyellov && Filter==2) || (Wadahgreen>Wadahyellov && Filter==3) || Filter==0 || Filter==1)
{
if((Bid>drange && Filter==1) || (Bid>drange && Filter==3) || Filter==0 || Filter==2)
{
if(signal_входа==1 && n<Количество_ордеров && timeopen<iTime(Symbol(),0,0) && Trend!=0 && Trend!=1 && nbuy==0 && SPREAD<Spred)
{
if(ReversProfit!=0)
ClosePosFirstProfit1(Symbol(),OP_SELL,Magic);
while(nnb<5)
{
if(IsTradeContextBusy()==false)
{
mb=OrderSend(Symbol(),0,LOT,Ask,Slip,0,0,Coment,Magic,0,Lime);
nnb++;
if(mb>0)break;
}
Sleep(100);
}
}
}
}
if((Wadahred>Wadahyellov && Filter==2) || (Wadahred>Wadahyellov && Filter==3) || Filter==0 || Filter==1)
{
if((Bid<drange && Filter==1) || (Bid<drange && Filter==3) || Filter==0 || Filter==2)
{
if(signal_входа==2 && n<Количество_ордеров && timeopen<iTime(Symbol(),0,0) && Trend!=0 && Trend!=2 && nsell==0 && SPREAD<Spred)
{
if(ReversProfit!=0)
ClosePosFirstProfit1(Symbol(),OP_BUY,Magic);
while(nns<5)
{
if(IsTradeContextBusy()==false)
{
ms=OrderSend(Symbol(),1,LOT,Bid,Slip,0,0,Coment,Magic,0,Red);
nns++;
if(ms>0)break;
}
Sleep(100);
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Modif()
{
int nnb=0;bool mb=false;int nns=0;bool ms=false;
for(int j=0; j<OrdersTotal(); j++)
{
if(OrderSelect(j,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
//вычисляем стоплосс и такепрофит
if(OrderType()==OP_BUY)
{
if(Bid>OrderOpenPrice()+TP*pp && Скрыть_SL_TP==true && TP!=0)
g=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Lime);
if(Bid<OrderOpenPrice()-SL*pp && Скрыть_SL_TP==true && SL!=0)
g=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Lime);
if((OrderStopLoss()==0 && SL!=0) || (OrderTakeProfit()==0 && TP!=0))
{
double SLb=NormalizeDouble(OrderOpenPrice()-SL*pp,Digits);
if(SL==0 || Скрыть_SL_TP==true)SLb=OrderStopLoss();
double TPb=NormalizeDouble(OrderOpenPrice()+TP*pp,Digits);
if(TP==0 || Скрыть_SL_TP==true)TPb=OrderTakeProfit();
while(nnb<5)
{
if(IsTradeContextBusy()==false)
{
mb=OrderModify(OrderTicket(),0,SLb,TPb,Lime);
nnb++;
if(mb==true)break;
}
Sleep(100);
}
}
}
if(OrderType()==OP_SELL)
{
if(Ask<OrderOpenPrice()-TP*pp && Скрыть_SL_TP==true && TP!=0)
g=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
if(Ask>OrderOpenPrice()+SL*pp && Скрыть_SL_TP==true && SL!=0)
g=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Lime);
if((OrderStopLoss()==0 && SL!=0) || (OrderTakeProfit()==0 && TP!=0))
{
double SLs=NormalizeDouble(OrderOpenPrice()+SL*pp,Digits);
if(SL==0 || Скрыть_SL_TP==true)SLs=OrderStopLoss();
double TPs=NormalizeDouble(OrderOpenPrice()-TP*pp,Digits);
if(TP==0 || Скрыть_SL_TP==true)TPs=OrderTakeProfit();
while(nns<5)
{
if(IsTradeContextBusy()==false)
{
ms=OrderModify(OrderTicket(),0,SLs,TPs,Red);
nns++;
if(ms==true)break;
}
Sleep(100);
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;Profit=0; timeopen=0;nsell=0;nbuy=0;SELL=0;BUY=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
g=OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && (OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderMagicNumber()==Magic)
{
count++;
Profit=Profit+OrderProfit()+OrderSwap()+OrderCommission();
if(OrderType()==OP_SELL)SELL++;
if(OrderType()==OP_BUY)BUY++;
if(OrderOpenTime()>timeopen)
timeopen=OrderOpenTime();
if(OrderType()==OP_SELL && OrderOpenPrice()>(Bid-Диапазон/2*pp) && OrderOpenPrice()<(Bid+Диапазон/2*pp))
nsell++;
if(OrderType()==OP_BUY && OrderOpenPrice()>(Ask-Диапазон/2*pp) && OrderOpenPrice()<(Ask+Диапазон/2*pp))
nbuy++;
}
}
return (count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Проверка_условий_входа()
{
double napravl=0; signbuy=0;signsell=0;
for(int z=1;z<=Баров_для_входа;z++)
{
if(реверс==false)
napravl=iClose(Symbol(),0,z)-iOpen(Symbol(),0,z);
else
napravl=iOpen(Symbol(),0,z)-iClose(Symbol(),0,z);
if(napravl>0)signbuy++;
if(napravl<0)signsell++;
}
if(signbuy==Баров_для_входа)return(1);
if(signsell==Баров_для_входа)return(2);
else return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Проверка_условий_выхода()
{
double napravl=0; closebuy=0;closesell=0;
for(int z=1;z<=Баров_для_выхода;z++)
{
if(реверс==false)
napravl=iClose(Symbol(),0,z)-iOpen(Symbol(),0,z);
else
napravl=iOpen(Symbol(),0,z)-iClose(Symbol(),0,z);
if(napravl>0)closesell++;
if(napravl<0)closebuy++;
}
if(closebuy==Баров_для_выхода)return(3);
if(closesell==Баров_для_выхода)return(4);
else return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Tral()
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(Bid-OrderOpenPrice()>TrailingStart*pp)
{
if(OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*pp)
{
ModifyStopLoss(Bid-TrailingStop*pp);
}
}
}
if(OrderType()==OP_SELL)
{
if(OrderOpenPrice() -Ask>TrailingStart*pp)
{
if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0)
{
ModifyStopLoss(Ask+TrailingStop*pp);
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss)
{
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
}
//| Описание: Закрытие одной предварительно выбранной позиции |
//+----------------------------------------------------------------------------+
void ClosePosBySelect()
{
bool fc;
color clClose;
double ll,pa,pb,pp1;
int dg=MarketInfo(OrderSymbol(),MODE_DIGITS),err,it;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
for(it=1; it<=5; it++)
{
if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
{
Print("ClosePosBySelect(): Остановка работы функции");
break;
}
while(!IsTradeAllowed()) Sleep(5000);
RefreshRates();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
if(OrderType()==OP_BUY)
{
pp1=pb; clClose=clCloseBuy;
} else {
pp1=pa; clClose=clCloseSell;
}
ll=OrderLots();
pp1=NormalizeDouble(pp1,dg);
fc=OrderClose(OrderTicket(),ll,pp1,10,clClose);
if(fc)
{
if(UseSound) PlaySound(SoundSuccess); break;
} else {
err=GetLastError();
if(UseSound) PlaySound(SoundError);
if(err==146) while(IsTradeContextBusy()) Sleep(1000*11);
Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
ErrorDescription(err),", try ",it);
Print(OrderTicket()," Ask=",pa," Bid=",pb," pp=",pp1);
Print("sy=",OrderSymbol()," ll=",ll," sl=",OrderStopLoss(),
" tp=",OrderTakeProfit()," mn=",OrderMagicNumber());
Sleep(1000*5);
}
}
}
else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
}
//| Описание : Закрытие позиций по рыночной цене сначала прибыльных |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit(string sy="",int op=-1,int mn=-1)
{
int i,k=OrdersTotal();
if(sy=="0") sy=Symbol();
// Сначала закрываем прибыльные позиции
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==Symbol()) && (op<0 || OrderType()==op))
{
if((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
{
if(OrderMagicNumber()==Magic)
{
if(OrderProfit()+OrderCommission()+OrderSwap()>0) ClosePosBySelect();
}
}
}
}
}
// Потом все остальные
k=OrdersTotal();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==Symbol()) && (op<0 || OrderType()==op))
{
if((OrderType()==OP_BUY && OrderComment()!="две_маши_лок_селл") || (OrderType()==OP_SELL && OrderComment()!="две_маши_лок_бай"))
{
if(OrderMagicNumber()==Magic) ClosePosBySelect();
}
}
}
}
}
//| Описание : Возвращает наименование торговой операции |
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");
}
}
//+------------------------------------------------------------------+
void ClosePosFirstProfit1(string sy="",int op=-1,int mn=-1)
{
int i,k=OrdersTotal();
if(sy=="0") sy=Symbol();
// Сначала закрываем прибыльные позиции
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==Symbol()) && (op<0 || OrderType()==op))
{
if((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
{
if(OrderMagicNumber()==Magic)
{
if(OrderProfit()+OrderCommission()+OrderSwap()>0) ClosePosBySelect();
}
}
}
}
}
// Потом все остальные
if(ReversProfit!=2)
{
k=OrdersTotal();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==Symbol()) && (op<0 || OrderType()==op))
{
if((OrderType()==OP_BUY && OrderComment()!="две_маши_лок_селл") || (OrderType()==OP_SELL && OrderComment()!="две_маши_лок_бай"))
{
if(OrderMagicNumber()==Magic) ClosePosBySelect();
}
}
}
}
}
}
ВТОРОЙ СОВЕТНИК:
//+------------------------------------------------------------------+
//| Sigma.mq4 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern double Profit = 0.1; // общий язь в валюте
extern double BuyProfit = 0; // язь по баям
extern double SellProfit = 0; // язь по селам
extern int StopLoss = 0; // лось
extern int TakeProfit = 0; // язь
extern int CandleProfit = 0; // 1-кроем профит в конце свечи
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
}
r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseType(int type)
{
bool cl;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY && type==0)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
}
if(OrderType()==OP_SELL && type==1)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
{
double pr=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(pr);
}
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
{
bool cl;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(t!=Time[0])
{
if(Close[1]>Open[1])
{
PutOrder(0,Ask);
}
if(Close[1]<Open[1])
{
PutOrder(1,Bid);
}
// кроем профит в конце свечи
if(CandleProfit>0 && AllProfit()>0) CloseAll();
t=Time[0];
}
//кроем все
if(Profit>0 && AllProfit()>Profit)
{
CloseAll();
}
//кроем баи
if(BuyProfit>0 && AllProfit(0)>BuyProfit) CloseAll(0);
//кроем селы
if(SellProfit>0 && AllProfit(1)>SellProfit) CloseAll(1);
Comment("\n All Profit: ",AllProfit(),
"\n Buy Profit: ",AllProfit(0),
"\n Sell Profit: ",AllProfit(1));
}
//+------------------------------------------------------------------+
Комментарии (17)
Бесплатно трейдерам от 3-го уровня или с поручителем. См. правила: project.opentraders.ru/20424.html
35 AM2 Сообщений: 16273 - Андрей
13 Jora1973 Сообщений: 114
35 AM2 Сообщений: 16273 - Андрей
2 Yoursin Автор Сообщений: 38 - забанен
2 Yoursin Автор Сообщений: 38 - забанен
2 Yoursin Автор Сообщений: 38 - забанен
Как в анекдоте про Баден Баден
Редактирован: 10 сентября 2017, 16:23
35 AM2 Сообщений: 16273 - Андрей
35 AM2 Сообщений: 16273 - Андрей
35 AM2 Сообщений: 16273 - Андрей
2 Yoursin Автор Сообщений: 38 - забанен
Сейчас происходит Так Sell -0.1- 2) Sell -0.4- 3) Buy -0.1- 5) Buy -0.4- 6) Sell -0.8- и т.д
Такой алгоритм вызывает большие просадки и риск слива депо
2 Yoursin Автор Сообщений: 38 - забанен
А почему в начале об этом не было ни слова?
35 AM2 Сообщений: 16273 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий