[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 966
Das ist möglich. Natürlich nur, wenn die Maklerfirma dies unterstützt.
Denken Sie daran, dass Sie im Tester nur Positionen für das aktuelle Instrument eröffnen können und dass es bei anderen Instrumenten einige Einschränkungen gibt
Gilt diese Reihe von Beschränkungen auch für den Online-Handel? Wenn nicht, ist das traurig. Mit dem Code lässt sich nichts öffnen:
int magic = 428;//магический номер экспертаexterndouble volume = 0.1;//объем выставляемого ордераexternint slippage = 3;//проскальзываниеint OPB;//метка выставляемого ордера на покупкуint OPS;//метка выставляемого ордера на продажуint Profit=1;//уровень профита открытых ордеровstring comB = "Выставили ордер Buy";//комментарий ордераstring comS = "Выставили ордер Sell";//комментарий ордераdouble StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCADdouble StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSDdouble SARCAD;//текущее положение индикатора по USDCADdouble SARСCAD;//положение индикатора бар назад по USDCADdouble SARAUD;//текущее положение индикатора по AUDUSDdouble SARСAUD;//положение индикатора бар назад по AUDUSDint start()
{
//______________________________определение значений переменных_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
double bidCAD=MarketInfo("USDCAD",MODE_BID);
double askCAD=MarketInfo("USDCAD",MODE_ASK);
double bidAUD=MarketInfo("AUDUSD",MODE_BID);
double askAUD=MarketInfo("AUDUSD",MODE_ASK);
........................
//______________выставление ордеров______________________________________________________________________if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
{ //_______Buy_______ if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку бай...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордерif(OPB == -1)
{
Alert("GBPUSD"," ошибка: бай", GetLastError());
return(-1);
}
if(OPB > 1)
Alert ("GBPUSD","Выставили ордер на покупку!");
}
else
{//_______Sell_______if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
{
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку селл...");
return(-1);
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордерif(OPS == -1)
{
Alert("GBPUSD"," ошибка: селл", GetLastError());
return(-1);
}
if(OPS > 1)
Alert ("GBPUSD","Выставили ордер на продажу!");
}
}
return(0);//выход
}
Können Sie mir bitte sagen: Gibt es nach dem Testen der Historie eine Möglichkeit, den Kommentar oder die magische Zahl jedes getätigten Handels zu erhalten, oder eine andere Möglichkeit, die Geschäfte zu identifizieren? Lassen Sie mich versuchen, die Bedeutung zu erklären. Angenommen, ich habe ein paar Muster programmiert und den Expert Advisor auf die Historie angewendet, und wie so oft schlägt er fehl. Es wäre interessant zu sehen, welche der Muster unter welchen Marktbedingungen immer häufiger verlieren und welche (wenn überhaupt) zumindest einen gewissen Gewinn aufweisen.
Vielen Dank im Voraus für die Antworten.
Machen Sie es einfach. Legen Sie die Musternummer als externen Parameter fest. Der Expert Advisor sollte Positionen nur nach diesem Muster eröffnen. Und wenn Sie z. B. Null angeben, öffnet es sich nach einem beliebigen Muster. Sie führen die Optimierung nach allen Mustern durch. Sie erhalten einen Überblick und eine Aufschlüsselung der Muster.
Es wird eine "New Order"-Funktion wie "New Bar" benötigt. Die Funktion sollte den Wert TRUE nur für einen Tick nach dem Zeitpunkt der Auftragseröffnung haben. D.h. in dem Moment, in dem sich die Anzahl der offenen Aufträge nach oben verändert. Bitte helfen Sie mir
es gibt ein solches Problem - ich hatte dieses Problem auch, wenn der Expert Advisor viele Trades pro Jahr macht - vielleicht werden zu viele Daten für die Ausgabe des Endergebnisses gespeichert oder vielleicht fressen die Indikatorpuffer den Speicher
Ich habe gesehen - ich weiß es nicht, seien Sie nachsichtig mit mir - für ein allgemeines Bild, ist der Test für 10 Jahre, und es ist besser, für ein Jahr zu optimieren und dann eine Auswahl der besten Parameter zu machen
Vielen Dank, Igor! Intuitiv tue ich das. Ich dachte, es könnte möglich sein, auch über einen längeren Zeitraum die Geschwindigkeit nicht zu verlieren?
Gurus bitte beraten, ich habe schon mein Gehirn gequält, ich denke, es sollte einfach sein, ich habe es auf beide Arten versucht ... Ich kann nicht...
Das ist der Kern des Problems:
Ich schreibe einen Indikator, fängt es Punkte in den Puffern, insgesamt sollte es 4, 2 montiert normalerweise, die Werte, wie sie von Bars sein sollte, entweder Null oder, Preis, hier ist alles in Ordnung, aber wir brauchen 2 weitere Puffer, in denen die Werte auf diese Weise setzen: wenn ein Nicht-Null-Wert für Puffer 0 gefunden wird, dann prüfen, ob die vorherige Nicht-Null-Wert in Puffer 0, und wenn es weniger ist, dann der aktuelle Wert wird in Puffer 2 geschrieben. Ich möchte, dass es on the fly berechnet werden, nicht durch die Suche und Schleifen, es ist mein erster Indikator, ich habe Expert Advisors und Skripte geschrieben, aber ich verlor meinen Weg mit Indikator und seine Puffer...
...................
Counted_bars=IndicatorCounted(); // Anzahl der berechneten Balken
i=Bars-Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>1) // Schleife über nicht gezählte Takte
{
if (..............) // hier funktioniert alles
{
Buf_0[i]=High[i];
{ hier wollen wir Buf_2[i] berechnen }
}
if (..............) //auch hier funktioniert alles
Gurus bitte beraten, ich habe schon mein Gehirn gequält, ich denke, es sollte einfach sein, ich habe es auf beide Arten versucht ... Ich kann nicht...
Der Kern des Problems:
Ich schreibe einen Indikator, fängt es Punkte in den Puffern, insgesamt sollte es 4, 2 montiert normalerweise, die Werte, wie sie von Bars sein sollte, entweder Null oder, Preis, hier ist alles in Ordnung, aber wir brauchen 2 weitere Puffer, in denen die Werte auf diese Weise setzen: wenn ein Nicht-Null-Wert für Puffer 0 gefunden wird, dann prüfen, ob die vorherige Nicht-Null-Wert in Puffer 0, und wenn es weniger ist, dann der aktuelle Wert wird in Puffer 2 geschrieben. Ich möchte, dass es on the fly berechnet werden, nicht durch die Suche und Schleifen, es ist mein erster Indikator, ich habe Expert Advisors und Skripte geschrieben, aber ich verlor meinen Weg mit Indikator und seine Puffer...
...................
Counted_bars=IndicatorCounted(); // Anzahl der berechneten Balken
i=Bars-Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>1) // Schleife über nicht gezählte Takte
{
if (..............) // hier funktioniert alles
{
Buf_0[i]=High[i];
{ hier wollen wir Buf_2[i] berechnen }
}
if (..............) //auch hier funktioniert alles
Kann mir jemand sagen, was das Problem ist?
Solange wir den Indikator selbst nicht haben, wird uns das niemand sagen.
Das ist möglich. Natürlich nur, wenn die Maklerfirma dies unterstützt.
Denken Sie daran, dass Sie im Tester nur Positionen für das aktuelle Instrument eröffnen können und dass es bei anderen Instrumenten einige Einschränkungen gibt
Gilt diese Reihe von Beschränkungen auch für den Online-Handel? Wenn nicht, ist das traurig. Mit dem Code lässt sich nichts öffnen:
Hallo zusammen.
Können Sie mir bitte sagen: Gibt es nach dem Testen der Historie eine Möglichkeit, den Kommentar oder die magische Zahl jedes getätigten Handels zu erhalten, oder eine andere Möglichkeit, die Geschäfte zu identifizieren? Lassen Sie mich versuchen, die Bedeutung zu erklären. Angenommen, ich habe ein paar Muster programmiert und den Expert Advisor auf die Historie angewendet, und wie so oft schlägt er fehl. Es wäre interessant zu sehen, welche der Muster unter welchen Marktbedingungen immer häufiger verlieren und welche (wenn überhaupt) zumindest einen gewissen Gewinn aufweisen.
Vielen Dank im Voraus für die Antworten.
Gibt es eine Möglichkeit, historische Aufträge außer Kraft zu setzen?
es gibt ein solches Problem - ich hatte dieses Problem auch, wenn der Expert Advisor viele Trades pro Jahr macht - vielleicht werden zu viele Daten für die Ausgabe des Endergebnisses gespeichert oder vielleicht fressen die Indikatorpuffer den Speicher
Ich habe gesehen - ich weiß es nicht, seien Sie nachsichtig mit mir - für ein allgemeines Bild, ist der Test für 10 Jahre, und es ist besser, für ein Jahr zu optimieren und dann eine Auswahl der besten Parameter zu machen
Gurus bitte beraten, ich habe schon mein Gehirn gequält, ich denke, es sollte einfach sein, ich habe es auf beide Arten versucht ... Ich kann nicht...
Das ist der Kern des Problems:
Ich schreibe einen Indikator, fängt es Punkte in den Puffern, insgesamt sollte es 4, 2 montiert normalerweise, die Werte, wie sie von Bars sein sollte, entweder Null oder, Preis, hier ist alles in Ordnung, aber wir brauchen 2 weitere Puffer, in denen die Werte auf diese Weise setzen: wenn ein Nicht-Null-Wert für Puffer 0 gefunden wird, dann prüfen, ob die vorherige Nicht-Null-Wert in Puffer 0, und wenn es weniger ist, dann der aktuelle Wert wird in Puffer 2 geschrieben. Ich möchte, dass es on the fly berechnet werden, nicht durch die Suche und Schleifen, es ist mein erster Indikator, ich habe Expert Advisors und Skripte geschrieben, aber ich verlor meinen Weg mit Indikator und seine Puffer...
...................
Counted_bars=IndicatorCounted(); // Anzahl der berechneten Balken
i=Bars-Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>1) // Schleife über nicht gezählte Takte
{
if (..............) // hier funktioniert alles
{
Buf_0[i]=High[i];
{ hier wollen wir Buf_2[i] berechnen }
}
if (..............) //auch hier funktioniert alles
{
Buf_1[i]=Low[i];
(hier wollen wir aber Buf_3[i] berechnen)
}
i--;
//Berechnung des Index für den nächsten Balken
}
//--------------------------------------------------------------------
return; // Beenden der Sonderfunktion start()
}
//--------------------------------------------------------------------
Gurus bitte beraten, ich habe schon mein Gehirn gequält, ich denke, es sollte einfach sein, ich habe es auf beide Arten versucht ... Ich kann nicht...
Der Kern des Problems:
Ich schreibe einen Indikator, fängt es Punkte in den Puffern, insgesamt sollte es 4, 2 montiert normalerweise, die Werte, wie sie von Bars sein sollte, entweder Null oder, Preis, hier ist alles in Ordnung, aber wir brauchen 2 weitere Puffer, in denen die Werte auf diese Weise setzen: wenn ein Nicht-Null-Wert für Puffer 0 gefunden wird, dann prüfen, ob die vorherige Nicht-Null-Wert in Puffer 0, und wenn es weniger ist, dann der aktuelle Wert wird in Puffer 2 geschrieben. Ich möchte, dass es on the fly berechnet werden, nicht durch die Suche und Schleifen, es ist mein erster Indikator, ich habe Expert Advisors und Skripte geschrieben, aber ich verlor meinen Weg mit Indikator und seine Puffer...
...................
Counted_bars=IndicatorCounted(); // Anzahl der berechneten Balken
i=Bars-Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>1) // Schleife über nicht gezählte Takte
{
if (..............) // hier funktioniert alles
{
Buf_0[i]=High[i];
{ hier wollen wir Buf_2[i] berechnen }
}
if (..............) //auch hier funktioniert alles
{
Buf_1[i]=Low[i];
(hier wollen wir aber Buf_3[i] berechnen)
}
i--;
//Berechnung des Index für den nächsten Balken
}
//--------------------------------------------------------------------
return; // Beenden der Sonderfunktion start()
}
//--------------------------------------------------------------------
Was passiert häufiger - kaufen oder verkaufen? Globale Bedeutung.