Boris.45: Guten Tag, geschätzte Trader! Bitte helfen Sie einem Programmieranfänger. Ich habe einen Programmblock geschrieben, der Fraktale für mehrere Zeitrahmen verwendet, um nach sich bewegenden Kanälen (SK) von Borispolz zu suchen, und habe begonnen, Algorithmen für die Positionseröffnung zu schreiben. Ich bin mit einer Situation konfrontiert, in der der Zeitrahmen von sich schnell bewegenden Trends nur ein oder zwei Balken beträgt. Diese Situation legt Folgendes nahe: Sie müssen bei der Suche und Berechnung der SK-Parameter auf ausgewählten Zeitrahmen arbeiten, während die Entscheidung, Aufträge zu erteilen oder Positionen zu eröffnen, auf sehr kleinen Zeitrahmen getroffen werden sollte. Bitte geben Sie mir einen Rat, wie ich das Programm so einrichten kann, dass der Block zur Berechnung der SK-Parameter nur für die ausgewählten Zeitrahmen, z.B. H1 und H4, funktioniert, und der Block zur Entscheidungsfindung über die Platzierung von Orders für den Zeitrahmen M1. Ich habe in den Artikeln keine Lösungen dafür gefunden.
Ich danke Ihnen für Ihre Aufmerksamkeit.
Ich bin ziemlich weit weg von Fraktalen, aber hier sind einige allgemeine Überlegungen. Wir können es auf die einfachste Weise versuchen: Erstellen Sie einen Indikator, der "SK-Parameter" auf H4 berechnet. Lassen Sie dann unseren Expert Advisor diesen Indikator bei jedem Tick überprüfen und Entscheidungen über die Platzierung von Aufträgen treffen.
Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range
#property indicator_label1 "LINE"#property indicator_type1 DRAW_LINE#property indicator_color1 clrGold#property indicator_style1 STYLE_SOLID#property indicator_width1 2inputint period = 10; //Период усреденияinputbool USE_LIMIT= false; //вкл/выкл лимитирование//Заключается в ограничении максимального изменения значения индикатораinputdouble use_limit= 0.00005; //Величина//на которую максимально может измениться индикаторdouble Buffer[];
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
//PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//--- вычисления значений индикатора//--- calculate the indicator valuesint start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate//--- if the calculation is made on a previous run of OnCalculateif(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations//--- заполняем индикаторный буфер значениями//--- fill indicator buffer valuesfor(int i=start;i<rates_total;i++)
{
Buffer[0]=price[0];
double delta=(price[i]-Buffer[i])/period;
if(USE_LIMIT && delta>use_limit)
{
delta=use_limit;
}
if(USE_LIMIT && delta<-use_limit)
{
delta=-use_limit;
}
Buffer[i+1]=Buffer[i]+delta;
}
//--- вернем значение prev_calculated для следующего вызова функции//--- return the value for the next call of prev_calculated functionreturn(rates_total);
}
//+------------------------------------------------------------------+
Für Tests: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization
Für den Live-Handel wurde noch keine Hilfe gefunden - versuchen Sie einfach, eine Position in einem Demokonto zu eröffnen und zu schließen.
Ich danke Ihnen für Ihre Aufmerksamkeit.
Für Tests: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization
Für den Live-Handel habe ich noch keine Hilfe gefunden - versuchen Sie einfach, eine Position in einem Demokonto zu eröffnen und zu schließen.
Danke! Ich werde es versuchen!
Aber ich brauche es nur zur Visualisierung auf einem Demokonto)
Wenn es auf einem Demokonto nicht funktioniert, lassen Sie es mich wissen.
Aber ich brauche es nur zur Visualisierung auf einem Demokonto)
Von der Historie aus können Sie die Maus auf das Diagramm ziehen (mit dem Schieberegler - alles).
!!! Mit einem Controller werden die Karteneinstellungen zurückgesetzt.Was ist an dem Code falsch?
Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range
Was ist an dem Code falsch?
Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range
Die Schleife geht solange, bis i<rates_total ist, dann gibt es Buffer[ i+1] .
Buffer[rates_total] gibt es nicht, der letzte Index ist rates_total-1.
Was ist an dem Code falsch?
Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range
Buffer[i+1] === +1 не делается проверка на выход за массивDie Schleife geht so lange, bis i<rates_total ist, dann gibt es Buffer[ i+1] .
Buffer[rates_total] gibt es nicht, der letzte Index ist rates_total-1.
Geändert in dies
i<rates_total-1Scheint zu funktionieren