Hilfe bei der Codierung - Seite 161

 

2 Aufträge zur gleichen Zeit

Hallo, ich versuche, einen EA zu programmieren, und ich habe ein Problem, ich weiß nicht, wie ich es lösen kann :?

also das Problem ist, dass ich 2 Orders (OPENSTOP und SELLSTOP) zum aktuellen Zeitpunkt öffnen möchte, aber dieser EA öffnet maby von ihnen über 100 oder mehr, also wie kann man es lösen, um nur 2 zu öffnen :??

extern double Lots=1;

extern double h_beg=10;

extern double h_end=23;

extern double TakeProfit=20;

extern double StopLoss=90;

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

int start()

{

double prevbar_H;

double Vorbalken_L;

double bar_H;

double bar_L;

double sell;

double buy;

bool trade_time;

bool sell_opened;

bool buy_opened;

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

if (Hour()==h_beg)

{

trade_time = true;

for(int h=1; h<=11; h++)

{

bar_H = iHigh(NULL,0,h);

if (vorbar_H==0 || vorbar_H<bar_H)

{

prevbar_H = bar_H;

}

}

for(int l=1; l<=11; l++)

{

bar_L = iLow(NULL,0,l);

if (vorbar_L==0 || vorbar_L>bar_L)

{

prevbar_L = bar_L;

}

}

}

if (Hour()==h_end)

{

trade_time = false;

prevbar_H = 0;

prevbar_L = 0;

DeletePending();

DeleteBUY();

sell=0;

buy=0;

}

//+--------------------------------------------------------buy or sell----------+

if(Stunde()==h_beg)

{

if(sell==0)

{

OrderSend(Symbol(),OP_SELLSTOP,Lots,prevbar_L,3,prevbar_L+200*Point,prevbar_L-200*Point, "MA sample",16384,0,Green);

verkaufen=1;

}

if(buy==0)

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,prevbar_H,3,prevbar_H-200*Point,prevbar_H+200*Point, "MA sample",16384,0,Green);

buy=1;

}

}

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

return(0);

}

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

void DeletePending()

{

for(int i=0; i<OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

OrderDelete(OrderTicket());

}

}

}

void DeleteBUY()

{

for(int i=0; i<OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

if (OrderType() == OP_BUY)

{

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );

}

}

}

}
 
carbonmimetic:
Hallo Mladen,

Wenn ich die Balken zwischen 2 Tiefstständen zählen möchte, wie kann ich den Balken von Sonntag 23.00 Uhr bis 00.00 Uhr vermeiden?

denn auf dem 4-Stunden-Chart gibt es diesen Balken und er dauert nur eine Stunde.....und er erscheint auch auf dem Tages-Chart.

vielen Dank im Voraus

carbonmimetic

Fügen Sie eine Wochentagsprüfung ähnlich wie diese hinzu:

if (TimeDayOfWeek(Time[yourCounter])!=0)

0 ist Sonntag und in diesem Fall muss man diesen Balken auslassen.

 

weil das System, das ich benutze, ist wie Martingal-Handelssystem, sobald ich die Reihenfolge ist etwa 1 Arbeitsauftrag und 4 anhängige Reihenfolge, wenn verlieren die 2. anhängige Reihenfolge wird Arbeitsauftrag, so muss ich die prev's TP gleich aktuelle Reihenfolge zu verschieben, daher hoffe ich, dass EA zu diesem automatisch haben kann, so dass ich keine Notwendigkeit, es zu beobachten, weil irgendwann müssen für das Mittag-oder Abendessen zu gehen. ich versuche, mich zu codieren, aber nicht wissen, wie man neue Reihenfolge auswählen und ändern Sie die prev Reihenfolge.

 
mladen:
carbonmimetic

Fügen Sie eine Wochentagskontrolle ähnlich wie diese hinzu:

if (TimeDayOfWeek(Time[yourCounter])!=0)
0 ist Sonntag und in diesem Fall müssen Sie diesen Balken auslassen

ok....Vielen Dank!

 

Hallo mladen,

könnten Sie bitte helfen, schauen Sie in den Code, sehe ich in Live-Chart, kann es Vergangenheit Signallinie neu zu malen, wenn ich die Aktualisierung von mt4 Menü drücken, kann die Linie Position vollständig zu verschieben, ich meine Vergangenheit Signallinie.

könnten Sie dieses Problem zu beheben, nicht zu malen Vergangenheit oder kann nicht autorefresh Probleme. ist es etwas wie Zählen Bars mit Problem oder Möglichkeiten der internen Schleife? Ich bin nur ein oberflächlicher Anfänger in Sachen Code. Vielen Dank für Ihre Hilfe.

Dateien:
 
kenwa:
Hallo mladen,

Könnten Sie bitte helfen, schauen Sie in den Code, ich sehe in Live-Chart, kann es neu malen Vergangenheit Signal-Linie, wenn ich drücken Sie die Aktualisierung der mt4-Menü, die Linie kann Position vollständig verschieben, ich meine Vergangenheit Signal-Linie.

könnten Sie dieses Problem beheben, nicht zu repaint Vergangenheit oder kann nicht autorefresh Probleme. ist es etwas wie Zählen Bars mit Problem oder Möglichkeiten der internen Schleife? Ich bin nur oberflächlicher Anfänger von Code. Vielen Dank für die Hilfe.

kenwa

Ersetzen Sie init und beginnen Sie mit diesen:

double CCI_idx[];

double CCI_idt[];

int init()

{

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,CCI_idx);

SetIndexBuffer(1,CCI_idt);

return(0);

}

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

//| |

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

int start()

{

int i,counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(i=limit;i>=0;i--) CCI_idt = iCCI(abc,0,CCI_Period,applied_price,i);

for(i=limit;i>=0;i--) CCI_idx = iMAOnArray(CCI_idt,Bars,MA_Period,0,MA_Method,i);

return(0);

}

Sie können nicht den gleichen Puffer für cci Werte sammeln und dann zu speichern, Durchschnitte von diesen cci - es war die Ursache der repainting. Außerdem wurde der Zeitrahmenbezug aus dem CCI-Aufruf entfernt. Wenn Sie möchten, dass der CCI auch im Multi-Time-Frame-Modus berechnet wird, muss er anders geschrieben werden

__________________________

PS: Derselbe Ratschlag könnte auch auf die Verwendung verschiedener Symbole in einem aktuellen Chart angewandt werden. Die Anzahl der geänderten Balken eines aktuellen Symbols muss nicht unbedingt mit der Anzahl der Balken eines anderen Zielsymbols übereinstimmen, damit man wieder einen Repainting-Effekt erhält, aber ich habe das so gelassen

 

Hallo mladen,

beziehen sich auf #1606 oben, da ich sehr oberflächlich Anfänger oder in der Tat sehr wenig wissen, kann ich nicht verstehen, was Sie meinen, könnten Sie einen funktionierenden Indikator hier beigefügt? kann ich einen Puffer verwenden, um CCI-Wert zu berechnen und dann den Durchschnitt getan, anstatt mit zwei Puffer? Sie erwähnen verschiedene Symbole, könnte es möglich, eine einfache Version zu schreiben, um zwei Symbol auf dem gleichen Diagramm unterzubringen? wenn es mtf ist, wie stattdessen zu schreiben, vielen Dank für Hilfe.

 
kenwa:
Hallo mladen, beziehen Sie sich auf #1606 oben, da ich sehr oberflächlich Anfänger oder in der Tat wissen sehr wenig, ich kann nicht verstehen, was Sie meinen, könnten Sie einen funktionierenden Indikator hier angehängt? kann ich einen Puffer verwenden, um CCI-Wert zu berechnen und dann getan den Durchschnitt, anstatt mit zwei Puffer? Sie erwähnen verschiedene Symbole, könnte es möglich sein, eine einfache Version zu schreiben, um zwei Symbol auf dem gleichen Chart unterzubringen? wenn es mtf, wie stattdessen zu schreiben, vielen Dank für Hilfe.

kenwa

Sie können nicht denselben Puffer für die Berechnung des Puffers verwenden und dann die Ergebnisse des Durchschnitts dieses CCI im selben Puffer speichern - der Durchschnitt wird die vergangenen Werte verändern

Was den Multi-Symbol-Indikator betrifft (derjenige, der auf andere Symbole im aktuellen Chart zugreifen kann): wenn ich die Lösung dafür poste, fürchte ich, dass sie nicht einfach sein wird. Es gibt keine einfache Lösung dafür, und Sie müssen zuerst klären, was mit zwei verschiedenen Symbolen gleichzeitig passiert

Ich füge die Version bei, die mit einem aktuellen Symbol und im aktuellen Zeitrahmen korrekt funktioniert (das ist der einzige Weg, wie Sie einen Durchschnitt eines cci berechnen können, wenn Sie die Funktion iMAOnArray() verwenden möchten)

Dateien:
 

kenwa

Dies wäre der einfachste Weg, damit es in mehreren Zeitrahmen funktioniert und jedes Symbol ausgewählt werden kann. Sie werden sehen, dass es nicht so einfach ist, wie es sich auf den ersten Blick anhört, aber dieses Programm tut alles, was nötig ist, um korrekte Daten zu sammeln und ein erneutes Zeichnen zu vermeiden, wenn es das tut

 

Hallo mladen,

vielen Dank, beziehen sich auf oben, wie, wenn Ihr mtf, wenn schreiben in nicht-mtf-Version sein? ich kann nicht modifiziert mich aufgrund meiner Kindergarten-coding-Ebene. übrigens, weil Sie scheint verbraucht 2 Puffer zu berechnen, aber mt4 nur erlauben 8 Puffer maximal ist es?wenn ich wie die beigefügte Referenz-Indikator (das ist in keiner Weise ein guter Indikator (hat Fehler im Inneren ich denke, nicht so praktikabel in live)), nur für Ihre Referenz, es kann zeigen, acht Symbole zur gleichen Zeit, nicht notwendig, Währung oder irgendwelche Symbole, die ich selbst eingeben wollen extern, (ich denke, überlagern die gleichen Indikator in sw ist nicht funktionieren, da die vertikale Skala ist nicht fix dort), wie Sie mir helfen können, erstellen Sie eine cci mtf ein wie die von Referenz-Indikator (nicht notwendig, so komplex, aber hat ähnliche Funktionen?) Vielen Dank noch einmal für freundliche Hilfe.

Dateien:
reference.mq4  17 kb