Wie programmiert man? - Seite 313

 

Hallo,

ist es möglich, mit dem Code nur Kauf- oder Verkaufsaufträge für das aktuell aktive Chart-Symbol zu ändern?

Es wäre sehr nützlich für mich in einem Skript, wo ich die Funktion WindowsPriceonDropped benutze, um die Order zu öffnen.

Dankeschön

 

...

dasio,

Versuchen Sie etwas wie dies :

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

// do the proccessing you wish here

}

}

dasio:
Hallo,

Ist es möglich, mit dem Code nur die Kauf- oder Verkaufsorder des aktuell aktiven Chartsymbols zu ändern?

Es wäre sehr nützlich für mich in einem Skript, in dem ich die Funktion WindowsPriceonDropped benutze, um eine Order zu öffnen.

Vielen Dank für Ihre Hilfe.
 

Wer will eine Herausforderung?

Ich brauche etwas Code, um das Folgende zu tun, siehe beigefügten Screenshot. Dies wäre Buy trade.

Ich habe es mit einer for-Schleife und einer Reihe von if-Bedingungen versucht, aber beides hat nicht zu den gewünschten Ergebnissen geführt.

Es scheint einfach zu sein, aber ich habe es nicht zum Laufen gebracht.

Dateien:
maexample.jpg  54 kb
 

Ihre Eingabebedingung könnte etwa so geschrieben werden:

double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
Ich brauche einen Code, der das Folgende tut, siehe beigefügten Screenshot. Dies wäre Buy trade.

Ich habe es mit einer for-Schleife und einer Reihe von if-Bedingungen versucht, aber beides hat nicht zu den gewünschten Ergebnissen geführt.

Es scheint einfach zu sein, aber ich habe es nicht zum Laufen gebracht.
 
mladen:
Ihre Eingabebedingung könnte etwa so geschrieben werden:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

Der Code, den Sie gepostet haben, würde mir das Signal für den Balken geben, der den gleitenden Durchschnitt überspannt. Aber ich brauche auch eine Möglichkeit, einen Handel auf jeder Bar nach dem Straddle Bar bis zu 5 Bars, sofern sie nicht überschreiten MA + 5. Der Grund dafür, dass ich kein Kaufsignal auf dem Straddle-Balken erhalte, ist, dass es einen anderen Indikator gibt, der einen TRUE-Wert anzeigen muss, der auf dem Straddle-Balken nicht TRUE sein darf, aber wenn er auf jedem Balken bis zu 5 Balken nach dem Straddle-Balken TRUE ist und die MA+5-Grenze nicht überschritten hat, kann ich trotzdem einen Handel eingehen. Nicht unter mehrere Trades nur eine pro Set-up.

Das Folgende ist, was ich bisher habe. Zu diesem Zeitpunkt markiere ich nur in Frage kommende Bars mit einem Pfeil darunter, nur Käufe. Sobald ich das hinbekomme, werde ich meinen Code eingeben, um die Order auszuführen. Ich weiß, es sieht einfach aus, aber wenn ich nichts Offensichtliches übersehe, ist es das auch nicht.

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

double Poin;

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

//| Custom initialization function |

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

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

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

// +

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

int deinit(){

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

In diesem Screenshot müssten Sie bei Bar 4 abbrechen, weil Bar 3 die MA +5 Grenze überschreitet, was bedeutet, dass Sie bei Bar 4 überprüfen müssen, ob Bar 3 die MA +5 Grenze überschritten hat, das ist das Ende dieser Handelseinrichtung.

Hier sind alle 5 Bars geeignet, weil keiner von ihnen die MA +5 Grenze überschritten hat

Dateien:
 

In diesem Screenshot müssten Sie bei Balken 4 abbrechen, weil Balken 3 die MA +5 Grenze überschreitet, was bedeutet, dass Sie bei Balken 4 überprüfen müssen, ob Balken 3 die MA +5 Grenze überschritten hat, was das Ende dieses Handels-Setups bedeutet.

Hier sind alle 5 Balken geeignet, weil keiner von ihnen die MA +5 Grenze überschritten hat

 

...

cyber1

In Ihren Beispielen müssen Sie, soweit ich das sehe, auch die Zukunft kennen, um einen Abbruch, wie Sie ihn beschreiben, durchführen zu können (denn vor dem "Abbruch"-Balken galten die Regeln und würden ein "Go"-Signal liefern)

Wenn Sie hingegen versuchen, alle zurückliegenden Balken auf die Einstiegsbedingung zu prüfen, werden Sie letztendlich immer einen "Regelbruch" haben und die Position nicht eingehen können.

cyber1:
In diesem Screenshot müssten Sie bei Balken 4 abbrechen, weil Balken 3 das MA +5-Limit überschreitet, was bedeutet, dass Sie bei Balken 4 prüfen müssen, ob Balken 3 das MA +5-Limit überschritten hat.

Hier kommen alle 5 Balken in Frage, da keiner von ihnen die MA +5 Grenze überschritten hat.

 

Schließen Sie alle offenen Handel EA

Kann mir jemand helfen, dieses EA zu erstellen?

Dieser EA wird alle offenen Handelspaare schließen, wenn der Zielgewinn und -verlust erreicht ist.

Wenn es alle schließen, dann starten Sie überwachen die geöffneten Handel.

Ich habe ein Limit Talent, dies zu tun.

Diese ea getrennt von den wichtigsten ea von jedem Paar.

 

Signal und Widerstand / Unterstützung dinamyc Linien.

Können Sie mir helfen, diesen Indikator in MT4 Sprache zu übersetzen?

a:=(hhv(close,tpr)+llv(close,tpr)+close)/3;

b:=(a1*2)-hhv(close,tpr);

Bewegung b:=mov(b,tpr,simple);

c:=(a1*2)-llv(close,tpr);

moving c:=mov(c,tpr,simple);

d:=(hhv(close,tpr/2)+llv(close,tpr/2)+close)/3;

Bewegung d:=mov(d,tpr/2,simple);

stream:=(b+c+d)/3;

beweglicher Strom:=mov(Strom,tpr,einfach).

hhv= maximaler Periodenwert (der höchste Wert des Schlusskurses in der gewählten Zeitspanne)

llv= minimaler Periodenwert (der niedrigste Wert des Schlusskurses in der gewählten Zeitspanne)

tpr=Zeitspanne (von 1 bis beliebig)

mov= gleitender Durchschnitt.

Die Ausgabe muss "stream" und "moving stream" enthalten! Auch wenn es auch "b", "moving b", "c", "moving c", "d" und "moving d" hat, ist das nicht schlimm!

Danke!

Dieses Forum ist großartig......

Lucmat

Dateien:
immagine.jpg  258 kb