Fragen Sie! - Seite 76

 

EA-Frage

Hallo Codersguru,

Ich versuche, das Programmieren zu lernen und benutze Ihr Material, ich muss sagen, es ist ausgezeichnet! Schritt für Schritt und einfach zu folgen, danke dafür.

Ich habe eine Frage, da Sie den ema cross over als Beispiel für den EA verwenden, habe ich daran gedacht, den stepMA_7.2 Indikator anstelle des ema zu verwenden. Glauben Sie, dass die stepMA_7.2 wird funktionieren? oder wird der Code neu geordnet werden müssen oder mehr additonal Code kann vielleicht benötigt werden?

Ich dachte, dass ein einfacher Austausch des Indikators im Code ausreichen würde.

Vielen Dank im Voraus

Zum Wohl.

 
Michel:
Das ist falsch: die vorherigen Balken sind positiv gezählt
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Ich danke Ihnen.

 
 

Ich habe immer noch einige Probleme. Die Kaufaufträge werden korrekt geöffnet, aber alle werden mit Stoploss geschlossen, ohne die Ausstiegsbedingungen zu beachten.

//+------------------------------------------------------------------+

//| EA Stripped Down.mq4 |

//+------------------------------------------------------------------+

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

//+------------------------------------------------------------------+

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

int start()

{

//+------------------------------------------------------------------+

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

//+------------------------------------------------------------------+

}
 
 

Gleitender Durchschnitt eines anderen Indikators

Ich habe es herausgefunden.

 

Prüfung auf offene Positionen innerhalb eines Bereichs

Ich versuche, nach offenen Positionen innerhalb von x Pips zu suchen, wenn keine Position offen ist, wird eine geöffnet. Es funktioniert nicht und öffnet nur Positionen kontinuierlich, kann jemand helfen?

if(buyingPosition)

{

weBeBuying = true;

totalorders = OrdersTotal();

for(i=0;i<totalorders;i++)

{

OrderSelect(i,SELECT_BY_POS);

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

type = OrderType();

if((type == OP_BUY) || (type == OP_BUYLIMIT))

{

if(((Bid+Spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = false;

}

}

}

}

if(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,Lots,Bid+Spread,Slippage,0,0,NULL,magicNumber,0,Green);

 

MA eines iCustom Indikators

Wie kodiere ich die Anweisung in einem Ea, um einen gleitenden Durchschnitt von 7, Smooth, eines iCustom-Indikators zu verwenden? Das entspricht der Verwendung eines gleitenden Durchschnitts mit den Daten des ersten Indikators. Sie können dies tun, wenn Sie einen iCustom-Indikator anzeigen und einen MA des Indikators haben (unter Verwendung der Daten des ersten Indikators), aber wie kodieren Sie es in einem Ea?

Bitte helfen Sie mir bei dieser Aussage!

Ich danke Ihnen im Voraus für Ihre Hilfe!

Dave

Kann jemand bei diesem Problem helfen???? Bitte!!!!

Ich glaube, ich habe es verstanden!:

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); //LOWER GAMMA

Ich brauche immer noch Hilfe - Können Sie mir helfen!

 

Hier können Sie Ihre Fragen zu MQL4 stellen, und ich werde mein Bestes tun, um sie zu beantworten

für Fehlercode.

Ich habe gerade wieder Konto zu mir, dass auf alle meine Experten, habe ich einen Fehlercode "OrderModify Fehler 1", auch mit einem Experten wie das von Coders Guru, unten,

warum?

Danke!

//+------------------------------------------------------------------+

//| PriceCross.mq4 |

//| Coders Guru |

//| https://www.mql5.com/en/forum |

//+------------------------------------------------------------------+

#Eigenschaft Copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Includes

#include

//---- Trades Grenzen

extern double TakeProfit = 200;

extern double TrailingStop = 50;

extern double StopLoss = 50;

extern double Lots = 0.1;

extern int Slippage = 5;

//--- Externe Optionen

extern int AktuellerBalken = 1;

extern int HedgeLevel = 6;

extern double Verfall = 7200;

extern int Größe = 4;

extern int Schritt = 1;

extern bool UseClose = true;

//--- Einstellungen der Indikatoren

extern int MaMode = 3;

extern int MaPeriod = 24;

//--- Globale Variablen

int MagischeZahl = 101090;

string Expertenkommentar = "PreisKreuz";

bool LimitPairs = true;

bool LimitFrame = wahr;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // Hinzufügen/Entfernen der zu begrenzenden Paare.

bool Optimize = true;

int NumberOfTries = 5;

//+------------------------------------------------------------------

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------

bool isNewSymbol(string aktuelles_symbol)

{

//Schleife durch alle geöffneten Aufträge und Vergleich der Symbole

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

//+------------------------------------------------------------------+

int start()

{

int cnt, ticket, total,n;

double trend ;

if(Bars<100) {Print("bars less than 100"); return(0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("Dieser EA funktioniert nicht mit diesem TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Drucke("Dieser EA funktioniert nicht mit dieser Währung!"); return(0);}

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- Handelsbedingungen

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Open[1]trend)

BuyCondition = wahr;

wenn (Open[1]>Trend && Close[1]<Trend)

SellCondition = wahr;

wenn (Open[1]>Trend && Close[1]<Trend)

CloseBuyCondition = wahr;

wenn (Open[1]Trend)

CloseSellCondition = true;

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- BUY condition

{

ticket = OpenOrder(OP_BUY); //<-- BUY-Order öffnen

CheckError(ticket, "BUY");

for(n=0 ; n< Size ; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

if(SellCondition) //<-- SELL-Bedingung

{

ticket = OpenOrder(OP_SELL); //<-- SELL-Order öffnen

CheckError(ticket, "SELL");

for(n=0 ; n < Size ; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

return(0);

}

for(cnt=0;cnt<gesamtzahl;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- Long-Position wird eröffnet

{

if(UseClose)

{

if(CloseBuyCondition) //<-- Schließen Sie die Order und steigen Sie aus!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Die Order nachverfolgen

}

if(OrderType()==OP_SELL) //<-- Auf Short-Position gehen

{

if(UseClose)

{

if(CloseSellCondition) //<-- Die Order schließen und aussteigen!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Die Order nachverfolgen

}

}

}

return(0);

}

//+------------------------------------------------------------------+

....

 

Hallo!

Gibt es eine Möglichkeit zu erkennen, dass ein Auftrag bereits abgeschlossen ist?

Die Illustration ist wie folgt:

Ich eröffne 2 schwebende Orders.

open #182 buy limit 0.17 EURUSD bei 1.3005 sl: 1.2970 tp: 1.3013

open #183 buy limit 0.17 EURUSD at 1.3000 sl: 1.2968 tp: 1.3011

dann

Auftrag #182, Kauf 0,17 EURUSD wird bei 1,3005 eröffnet

Gewinnmitnahme #182 bei 1,3013 (1,3013 / 1,3015)

Ich möchte die Order #183 löschen, nachdem die Order #182 geschlossen wurde. Der Auslöser ist, wenn die Order #182 geschlossen wird, dann wird die Order #183 gelöscht.

Vielen Dank