Ich habe beschlossen, meinen Handel ein wenig zu robotisieren. Ich habe einen Trend Expert Advisor vom MT4-Terminal"MovingAverage" verwendet. Ich habe mich entschieden, meinen eigenen EA aus dem MT4-Terminal zu verwenden und habe einige leichte Änderungen vorgenommen. Ich fügte eine weitere Maske hinzu, änderte die Ein- und Ausstiegsbedingungen, fügte Stop und Profit hinzu und begrenzte die Öffnungszeit. Ich würde gerne noch mehr hinzufügen.
1) Die Möglichkeit, zwei Aufträge gleichzeitig mit einstellbarem Stop-Loss, Take-Profit und Null-Loss zu eröffnen.
2) Einstellbare Anzahl von Einträgen pro Tag.
3) Einstellbare Möglichkeit, am nächsten Tag in den Handel einzusteigen, wenn ein Geschäft geöffnet ist.
4) Einstellbarer Ausstieg durch Stop Loss, No Loss oder Take Profit.
5) Abschaffung der Berechnung des maximalen Risikos. (Besondere Notwendigkeit sehe ich nicht, außerdem verstehe ich nicht, wie er das Risiko berechnet, den Eindruck, dass aus dem Hintergrund, Lose geöffnet wurden dann 0,10 dann 1,00)
6) Funktioniert nicht korrekt mit dem Währungspaar USDJPY
Vielleicht sollte etwas korrigiert, gereinigt werden, um die Arbeit des EA zu verbessern. Hilfe oder Tipps.
Arbeitet auf mehr als zehn Charts gleichzeitig, in jedem Fenster des Währungspaarcharts gibt es einen eigenen EA. Der Code ist beigefügt. Vielen Dank an alle, die geantwortet haben.
//+------------------------------------------------------------------+//| MA_MA_1.mq4 |//| Copyright 2017, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2017, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//#property strict#define MAGICMA 20131112//--- Inputsinputdouble SL =500; //стоп лосinputdouble TakeProfit =1000; //тейк профитinputdouble Lots =0.01; //розмер лота//input double MaximumRisk =0.1; //отключил не понятна логика расчетаinputdouble DecreaseFactor = 3; //фактор снижение(наверно проскальзывание)inputint MovingPeriod1 =36; //медленная средняяinputint MovingPeriod2 =12; //быстрая средняяinputint MovingShift1 =10; //сдвиг медленной среднейinputint MovingShift2 = 0; //сдвиг быстрой среднейexternint TimeStart = 8; //время начала торговexternint TimeStop =20; //время окончания торгов//+------------------------------------------------------------------+//| Calculate open positions //считаем открытые позиции |//+------------------------------------------------------------------+int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//---for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//--- return orders volume //объём ордеров на возвратif(buys>0) return(buys);
elsereturn(-sells);
}
//+------------------------------------------------------------------+//| Calculate optimal lot size //расчет оптимального размера лота |//+------------------------------------------------------------------+double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total (история заказов всего)int losses=0; // number of losses orders without a break (количество потерь заказов без перерыва)//--- select lot size //ОТКЛЮЧИЛ выбор размер лота. //lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);//(логика выбора мне не понятна)//--- calcuulate number of losses orders without a break (Расчет количества заказов на потери без перерыва)// if(DecreaseFactor>0)// {// for(int i=orders-1;i>=0;i--)// {// if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)// {// Print("Error in history!");// break;// }// if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)// continue;//---// if(OrderProfit()>0) break;// if(OrderProfit()<0) losses++;// }// if(losses>1)// lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);// }//--- return lot size (розмер возвращаемого лота)if(lot<0.1) lot=0.1;
return(lot);
}
//+------------------------------------------------------------------+//| Check for open order conditions //проверка условий для открытия ордера |//+------------------------------------------------------------------+void CheckForOpen()
{
double ma1; //медленная средняяdouble ma2; //быстрая средняяint res;
//--- go trading only for first tiks of new bar// торговать только на первом тике нового бараif(Volume[0]>1) return;
//--- get Moving Average //получение скользящих средних
ma1=iMA(NULL,0,MovingPeriod1,MovingShift1,MODE_SMA,PRICE_CLOSE,0);//медленная
ma2=iMA(NULL,0,MovingPeriod2,MovingShift2,MODE_SMA,PRICE_CLOSE,0);//быстрая//--- sell conditions //условия для продажиif(ma1<ma2 && Close[1]<ma1 && TimeHour(TimeCurrent())>TimeStart && TimeHour(TimeCurrent())<TimeStop)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+SL*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
return;
}
//--- buy conditions //условия для покупкиif(ma1>ma2 && Close[1]>ma1 && TimeHour(TimeCurrent())>TimeStart && TimeHour(TimeCurrent())<TimeStop)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-SL*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+//| Check for close order conditions //проверка условий для закрытия ордера |//+------------------------------------------------------------------+void CheckForClose()
{
double ma1;//медленнаяdouble ma2;//быстрая//--- go trading only for first tiks of new bar// торговать толькона тике нового бараif(Volume[0]>1) return;
//--- get Moving Average //получение средних
ma1=iMA(NULL,0,MovingPeriod1,MovingShift1,MODE_SMA,PRICE_CLOSE,0);//медленная
ma2=iMA(NULL,0,MovingPeriod2,MovingShift2,MODE_SMA,PRICE_CLOSE,0);//быстрая//---for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//--- check order type //проверка типа ордераif(OrderType()==OP_BUY)
{
if(Close[1]<ma2 && Open[2]>Close[1] && ma1<ma2) //(Open[1]>ma && Close[1]<ma)
{
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
Print("OrderClose error ",GetLastError());
}
break;
}
if(OrderType()==OP_SELL)
{
if(Close[1]>ma2 && Open[2]<Close[1] && ma1>ma2)
{
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
Print("OrderClose error ",GetLastError());
}
break;
}
}
//---
}
//+------------------------------------------------------------------+//| OnTick function //функция нового тика |//+------------------------------------------------------------------+voidOnTick()
{
//--- check for history and tradingif(Bars<100 || IsTradeAllowed()==false)
return;
//--- calculate open orders by current symbolif(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//---
}
//+------------------------------------------------------------------+
Kann ich Hilfe bekommen? Der Expert Advisor ruft jeden Tick Trades ab. Wie schreibe ich einen Code, um etwa 5 oder nur so viele Gewerke zu entfernen, wie ich möchte?
Kann ich Hilfe bekommen? Der Expert Advisor ruft bei jedem Tick Trades ab. Wie schreibe ich den Code, um etwa 5 Gewerke zu zeichnen oder nur so viele, wie ich möchte?
Was sollte ich an dem Code ändern oder hinzufügen?
Ich sollte eine Schleife hinzufügen und die Anzahl der Aufträge vor der Ausführung von OrderSend begrenzen.
Hallo. Können Sie einen Expert Advisor zu dieser Strategie schreiben https://www.youtube.com/watch?v=V58JIhy2rw4. Oder haben Sie vielleicht einen Expert Advisor, der auf der Stelle stagniert oder ein wenig in die Gewinnzone geht.... Für den Verdienst auf Rabatt auf der Website fxcash.ru. Danke, dann wenden Sie sich bitte an https://vk.com/id16112208 oder unter vier Augen.
Guten Tag!
Ich habe beschlossen, meinen Handel ein wenig zu robotisieren. Ich habe einen Trend Expert Advisor vom MT4-Terminal"Moving Average" verwendet. Ich habe mich entschieden, meinen eigenen EA aus dem MT4-Terminal zu verwenden und habe einige leichte Änderungen vorgenommen. Ich fügte eine weitere Maske hinzu, änderte die Ein- und Ausstiegsbedingungen, fügte Stop und Profit hinzu und begrenzte die Öffnungszeit. Ich würde gerne noch mehr hinzufügen.
1) Die Möglichkeit, zwei Aufträge gleichzeitig mit einstellbarem Stop-Loss, Take-Profit und Null-Loss zu eröffnen.
2) Einstellbare Anzahl von Einträgen pro Tag.
3) Einstellbare Möglichkeit, am nächsten Tag in den Handel einzusteigen, wenn ein Geschäft geöffnet ist.
4) Einstellbarer Ausstieg durch Stop Loss, No Loss oder Take Profit.
5) Abschaffung der Berechnung des maximalen Risikos. (Besondere Notwendigkeit sehe ich nicht, außerdem verstehe ich nicht, wie er das Risiko berechnet, den Eindruck, dass aus dem Hintergrund, Lose geöffnet wurden dann 0,10 dann 1,00)
6) Funktioniert nicht korrekt mit dem Währungspaar USDJPY
Vielleicht sollte etwas korrigiert, gereinigt werden, um die Arbeit des EA zu verbessern. Hilfe oder Tipps.
Arbeitet auf mehr als zehn Charts gleichzeitig, in jedem Fenster des Währungspaarcharts gibt es einen eigenen EA. Der Code ist beigefügt. Vielen Dank an alle, die geantwortet haben.
Hallo. Können Sie diese Strategie nutzen, um einen Berater zu schreiben https://www.youtube.com/watch?v=V58JIhy2rw4. Oder haben Sie einen Berater, der auf seinem Platz stagniert oder leicht im schwarzen.... Für den Verdienst auf Rabatt auf der Website fxcash.ru. Danke. Wenn der Piepton in Ek https://vk.com/id16112208 oder unter vier Augen.
Schauen Sie sich den Zweig Avalanche an, es gibt Berater für diesen TS.
Hallo!
Kann ich Hilfe bekommen? Der Expert Advisor ruft jeden Tick Trades ab. Wie schreibe ich einen Code, um etwa 5 oder nur so viele Gewerke zu entfernen, wie ich möchte?
extern int tp=50;
extern int sl=200;
extern double lot=0.01;
oid OnTick()
{
OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point, "Batsasho",1,0,Red);
}
Was sollte ich an dem Code ändern oder hinzufügen?
Ich danke Ihnen!
Wenn ich es Ihnen nicht schwer mache, können Sie antworten ***
Ich danke Ihnen!
Ich habe versucht, die vorgefertigten Vorlagen nachzubearbeiten, aber am Ende geben sie ein paar Fehler aus, alles was ich brauche, ist eine Eule:
1) eröffnet eine Kaufposition, wenn die geschlossene Kerze bullisch ist, und eine Verkaufsposition, wenn die geschlossene Kerze bärisch ist.
2) und so weiter nach JEDEM Kerzenständer.
Ich habe die zweite Bedingung nicht erfüllt.
Wenn jemand helfen kann, wäre ich sehr dankbar.
Kann ich Hilfe bekommen? Der Expert Advisor ruft bei jedem Tick Trades ab. Wie schreibe ich den Code, um etwa 5 Gewerke zu zeichnen oder nur so viele, wie ich möchte?
Was sollte ich an dem Code ändern oder hinzufügen?