Wie programmiert man? - Seite 50

 

Wiederherstellung eines Datentyps aus einem Indikator

Hallo

Ist es möglich, einen Datentyp aus einem Indikator (3 MA Cross w alert) wiederherzustellen, um ihn in einen EA einzufügen?

Dies ist, was ich tun möchte:

In dem Indikator (3 MA Cross w alert) habe ich einen Datentyp eingegeben:

double execute_trade = "ok_buy" oder execute_trade = "ok_sell" hier :

************Indicator ************

wenn ((fasterMAnow > slowerMAnow &&

fasterMAprevious <= slowerMAprevious &&

fasterMAafter > slowerMAafter &&

mediumMAnow > slowerMAnow )

||

(schnellerMAjetzt > langsamerMAjetzt &&

mediumMAnow > slowerMAnow &&

mediumMAprevious <= slowerMAprevious &&

mediumMAafter > slowerMAafter ))

{

CrossUp = Niedrig - Bereich*0,5;

string execute_trade = "ok_buy";

}

if ((fasterMAnow < slowerMAnow &&

fasterMAprevious >= slowerMAprevious &&

schnellerMAnach < langsamerMAnach &&

mediumMAnow < slowerMAnow )

||

(schnellerMAjetzt < langsamerMAjetzt &&

mediumMAnow < slowerMAnow &&

mediumMAprevious >= slowerMAprevious &&

mediumMAafter < slowerMAafter ))

{

CrossDown = Hoch + Bereich*0,5;

execute_trade = "ok_sell";

}

************************

und ich möchte "excute_trade" in meinem EA wie folgt wiederherstellen:

***********EA***************

if (excute_trade== "ok_buy")

Auftrag = SIGNAL_BUY;

wenn (excute_trade== "ok_sell")

Auftrag = SIGNAL_SELL;

****************************

Aber ich weiß nicht, wie ich das machen soll

bitte um Hilfe

Mit freundlichen Grüßen

Dateien:
 
Julia:
Kann mir jemand sagen, wie ich den folgenden Code schreiben soll?

Wenn meine Ea auf dem M30-Diagramm gedreht wird, möchte ich, dass der Code sagt:

if(auf dem M5-Zeitrahmen ist der heutige Schlusskurs > der gestrige Schlusskurs)

{

.........

}

Der heutige Schlusskurs ist der aktuelle BID; der gestrige Schlusskurs ist unabhängig vom Zeitrahmen, es spielt also keine Rolle, ob es sich um den M30- oder den M5-Zeitrahmen handelt.

if(Bid > iClose(NULL,PERIOD_D1,1))

{

...

}

 
natsirte:
Hallo

Ist es möglich, einen Datentyp aus einem Indikator (3 MA Cross w alert) wiederherzustellen, um ihn in einen EA zu integrieren?

Dies ist, was ich tun möchte:

In dem Indikator (3 MA Cross w alert) habe ich einen Datentyp eingegeben:

double execute_trade = "ok_buy" oder execute_trade = "ok_sell" hier :

************Indicator ************

wenn ((fasterMAnow > slowerMAnow &&

fasterMAprevious <= slowerMAprevious &&

fasterMAafter > slowerMAafter &&

mediumMAnow > slowerMAnow )

||

(schnellerMAjetzt > langsamerMAjetzt &&

mediumMAnow > slowerMAnow &&

mediumMAprevious <= slowerMAprevious &&

mediumMAafter > slowerMAafter ))

{

CrossUp = Niedrig - Bereich*0,5;

string execute_trade = "ok_buy";

}

if ((fasterMAnow < slowerMAnow &&

fasterMAprevious >= slowerMAprevious &&

schnellerMAnach < langsamerMAnach &&

mediumMAnow < slowerMAnow )

||

(schnellerMAjetzt < langsamerMAjetzt &&

mediumMAnow < slowerMAnow &&

mediumMAprevious >= slowerMAprevious &&

mediumMAafter < slowerMAafter ))

{

CrossDown = Hoch + Bereich*0,5;

execute_trade = "ok_sell";

}

************************

und ich möchte "excute_trade" in meinem EA wie folgt wiederherstellen:

***********EA***************

if (excute_trade== "ok_buy")

Auftrag = SIGNAL_BUY;

wenn (excute_trade== "ok_sell")

Auftrag = SIGNAL_SELL;

****************************

Aber ich weiß nicht, wie ich das machen soll

Bitte um Hilfe

Mit freundlichen Grüßen

Sie müssen die Funktion iCustom verwenden, um den Wert der Puffer (d.h. der Pfeile) abzurufen;

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

Berechnet den angegebenen benutzerdefinierten Indikator und gibt seinen Wert zurück. Der benutzerdefinierte Indikator muss kompiliert sein (*.EX4-Datei) und sich im Verzeichnis terminal_directory\experts\indicators befinden.

Parameter:

symbol - Symbol, dessen Daten zur Berechnung des Indikators verwendet werden sollen. NULL bedeutet aktuelles Symbol.

timeframe - Zeitrahmen. Es kann ein beliebiger Wert aus der Timeframe Aufzählung sein. 0 bedeutet den aktuellen Chart-Zeitrahmen.

name - Name des vom Indikator kompilierten Programms.

... - Eingestellte Parameter (falls erforderlich). Die übergebenen Parameter und ihre Reihenfolge müssen mit der Reihenfolge der Deklaration und dem Typ der externen Variablen des benutzerdefinierten Indikators übereinstimmen.

mode - Zeilenindex. Kann zwischen 0 und 7 liegen und muss mit dem von einer der SetIndexBuffer-Funktionen verwendeten Index übereinstimmen.

shift - Index des aus dem Indikatorpuffer entnommenen Wertes (Verschiebung relativ zum aktuellen Balken um die angegebene Anzahl von Perioden).

Beispiel:

double val=iCustom(NULL, 0, "SampleInd",13,1,0);

In Ihrem Fall sollte die Syntax lauten:

if(iCustom(NULL, 0, "3 MA Cross w_Alert v2", p1, , , , p10, 0, 0) > 0) // Buy

{

...

}

if(iCustom(NULL, 0, "3 MA Cross w_Alert v2", p1, , , , p10, 1, 0) > 0) // Sell

{

...

}

Die Parameter p1 bis p10 sind die Werte, die als externe Parameter an den Indikator gesendet werden. Zum Beispiel bedeutet p1 den Wert, der FasterMA zugewiesen werden soll, p2 den Wert, der FasterShift zugewiesen werden soll, und so weiter bis zur letzten externen Deklaration p10 SoundAlert. Sehen Sie sich den Code des Indikators an, um die Reihenfolge und die Bedeutung der Parameter zu erfahren.

 

Danke Michel.

Aber was ist, wenn der Code in einem Indikatorcode steht?

Ist es:

if(Close[pos]>iHigh(Symbol(),PERIOD_M5,[pos+1])?????

 
Beno:
Gidday Ich bin langsam die Behebung der Fehler in einigen, wenn meine ea's (und lernen viel auf dem Weg), aber was bedeutet das.

2007.10.24 21:22:24 1998.11.20 06:00 The Abyss GBPJPY,Daily: ungültige Doppelzahl als Parameter 6 für OrderSend-Funktion

Ich kann nicht finden, etwas auf diesen Fehler, was sollte ich suchen.

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Wie Sie sehen können, ist Parameter sechs der Stoploss. Stellen Sie sicher, dass Ihr Stoploss als int definiert ist. Als Nächstes müssen Sie in Ihrem OrderSend()-Befehl sicherstellen, dass Sie den Stoploss mit Punkt multiplizieren. Dies entspricht dem richtigen Double für die Währung, in der Sie handeln.

Beispiel für Long:

ticketa=OrderSend(Symbol(),OP_BUY,lotsize,Ask,slip,Ask-intStopLoss*Point,Ask+intTakeProfit*Point, "Comment",magic,0,Green);

Beispiel für kurz:

ticketb=OrderSend(Symbol(),OP_SELL,lotize,Bid,slip,Bid+intStopLoss*Point,Bid-intTakeProfit*Point, "Comment",magic,0,Blue);

Hoffentlich hilft das.

 

Danke Wolfe

Das half viel, aber hat ein neues Problem eröffnet lol es kauft jetzt aber nicht verkaufen auch nicht an der richtigen Stelle. Ich habe versucht, zu kaufen, was alle drei indi sind blau und verkaufen, wenn alle rot.

Ich denke, ich habe den richtigen Namen "The Abyss" für die ea ausgewählt. wie das ist, wo ich sitze versuchen, meinen Weg aus Code. LOL

2007.11.24 10:14:44 2007.11.23 12:00 The Abyss EURUSD,H4: Fehler beim Eröffnen einer SELL Order: 0

void CheckForSignals() {

double TML=iCustom(NULL,0, "TrendManager",TM_Period,TM_Shift,0,shift);

double TMS=iCustom(NULL,0, "TrendManager",TM_Period,TM_Shift,1,shift);

double hasOpenLong=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,1,shift) ;

double hasCloseLong=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,3,shift) ;

double hasOpenShort=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,0,shift) ;

double hasCloseShort=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,2,shift) ;

double SDLL=iCustom(NULL,0, "Slope Direction Line",Periode,Methode,Preis,0,Shift);

double SDLS=iCustom(NULL,0, "Slope Direction Line",period,method,price,1,shift);

buysig=false;

sellsig=false;

closebuy=false;

closesell=false;

bool Long1 = TML;

bool Short1 = TMS;

bool Long2 = SDLL;

bool Short2 = SDLS;

bool Long3 = hasOpenLong > hasCloseLong;

bool Short3 = hasOpenShort < hasCloseShort;

buysig = Long1 && Long2 && Long3;

sellsig = Short1 && Short2 && Short3;

closebuy=sellsig;

closesell=buysig;

}

void CheckForOpen() {

if (last==Time[0]) return;

int res,ord;

double entry,stop;

ord=CalculateCurrentOrders();

if (ord!=0) CheckForClose();

//---- Kaufbedingungen

if (buys< buysig) {

res=OpenAtMarket(OP_BUY,Lots);

if (res<0) Print("Fehler beim Öffnen der BUY-Order : ",(GetLastError()));

sonst last=Time[0];

}

//---- Verkaufsbedingungen

if (sells< sellsig) {

res=OpenAtMarket(OP_SELL,Lots);

if (res<=0) Print("Fehler beim Öffnen der SELL-Order : ",(GetLastError()));

sonst last=Time[0];

}

}

int OpenAtMarket(int mode,double lot) {

int tr,col;

double openprice;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

RefreshRates();

if (mode==OP_SELL) {

openprice=Bid;

col=Rot;

} sonst {

//openprice=nd(Ask);

openprice=Ask;

col=Blau;

}

OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+Magic,Magic,0,col);

}

zurück;

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

//| Prüfung auf Close-Order-Bedingungen |

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

void CheckForClose() {

int total;

//----

total=OrdersTotal();

for(int i=total;i>=0;i--)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;

//---- Auftragsart prüfen

if(OrderType()==OP_BUY && closebuy) CloseAtMarket(OrderTicket(),OrderLots());

if(OrderType()==OP_SELL && closesell) CloseAtMarket(OrderTicket(),OrderLots());

}

}

bool CloseAtMarket(int ticket,double lot) {

bool bres=false; int tr;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

RefreshRates();

bres=OrderClose(Ticket,Lot,OrderClosePrice(),Slippage,White);

if (!bres) Print("Fehler beim Schließen der Order : ",(GetLastError()));

}

 
Julia:
Danke Michel.

Was aber, wenn der Code in einem Indikatorcode steht?

Ist das so?

if(Close[pos]>iHigh(Symbol(),PERIOD_M5,[pos+1])?????

Ja, das kann sein; alles hängt davon ab, was Sie tun sollen...

 

Hilfe Plz - Konvertieren Sie diese in Mq4 - Vielen Dank

Liebe alle:

Ich baue ein System, das ich denke, es ist sehr gut, ich testete die Idee vor für 3 Monate, jetzt bin ich versuchen, die Codierung ein Indikator, der so schnell wie möglich in das Forum, so dass wir es testen können und es wird wirklich gutes Geld machen ich denke:

Plz helfen mir für jetzt, um diese Zeilen in mql4 Kodierung zu konvertieren:

1- Ich habe vairable X, dies wird einen Wert haben und ich bin es jetzt zu berechnen

SO haben wir X als eine ganze Zahl

2- der Indikator muss die aktuelle GMT Zeit überprüfen, es muss 6:00 Uhr GMT sein - Time Frame 1 H

-- check GMT TIME 6:00am, WENN diese Kerze schließt, müssen wir die folgende Variable dieser Kerze berechnen:

Hoch - Tief = A

A / 2 = B

B - Hoch = C = SL

D = X * 30%

Kauf_Einstieg= D + C

Kauf_Ziel= C + (X * 60%)

Verkauf_Einstieg= C - D

Verkauf_Ziel= C - (X * 60%)

Dann:

Ich möchte das Ergebnis als Linien auf dem Chart mit einem grünen Bereich für Buy und einem roten Bereich für Short einzeichnen.

diese müssen automatisch erscheinen, sobald die GMT 6:00 Kerze beendet ist, Time Frame 1H, also muss die Berechnung nach 6:00 bis 6:59 Uhr GMT Kerze hoch und niedrig sein

PLZ Konvertieren Sie dies in MQL4, so kann ich es testen und wieder zurückkommen, um das Ergebnis zu veröffentlichen

DANKE ALOT

 
Beno:
Danke Wolfe

Das half viel, aber hat ein neues Problem eröffnet lol es kauft jetzt aber nicht verkaufen auch nicht an der richtigen Stelle. Ich habe versucht, zu kaufen, was alle drei indi sind blau und verkaufen, wenn alle rot.

Ich glaube, ich habe den richtigen Namen "The Abyss" für die Ea gewählt, denn genau dort sitze ich und versuche, meinen Weg hinaus zu programmieren. LOL

Beno, ich bin nicht sicher, über diese ein. Ich habe in der Regel keine guten Erfahrungen mit der Verwendung von farbwechselnden Indikatoren in EA's gemacht. Öffnen Sie Ihr Datenfenster mit Ihren Indikatoren und finden Sie heraus, welcher numerische Wert für jede Farbe zurückgegeben wird. Das kann Ihnen bei der Codierung helfen. Stellen Sie außerdem sicher, dass Sie den richtigen Indikatorpuffer zur richtigen Zeit aufrufen. (Ich bin sicher, Sie haben bereits getan, dass) Sie können mehr Glück mit Hilfe haben, wenn Sie die gesamte EA posten, wenn Sie wirklich Hilfe benötigen. Außerdem würde ich persönlich den EA mit 2 separaten Ordersend()-Funktionen programmieren, eine für Short-Positionen und eine für Long-Positionen. Das ist nur meine Meinung, es macht die Dinge einfacher zu folgen.

Viel Glück, wir alle haben unsere eigenen Versionen des "Abgrunds" erlebt!

 

Danke Wolfe

Ich werde die Option 2 Ordersend ausprobieren, um zu sehen, was passiert. Sobald ich das hinbekomme, werde ich es posten.

Grund der Beschwerde: