Ich erhalte den exakten Wert, aber ich kann den "Obem_Pozic"-Wert nicht auf 1,00 setzen, so dass ich die Menge für die Anzeige berechnen kann, ich möchte ihn nicht normalisieren, sondern nur 4 Dezimalstellen ausgeben.
Ich schreibe in MQL4.
Ich frage nach MQL4 in dem entsprechenden Forum, hier ist es ein A.
Sie sollten DoubleToStr() verwenden, um genauere Werte auf dem Bildschirm anzuzeigen.
Dieses Paar wird wahrscheinlich vom Terminal bereitgestellt und muss nur noch angeschlossen werden. Wenn manuell, dann in Market Watch. Und wenn es ein erwachsenes ist, sollte es manuell mit SymbolSelect() gemacht werden.
Sobald Sie einen Fehler haben, werden andere folgen. Die ersten Fehler befinden sich am unteren Ende des Terminals. Wir sollten also versuchen, die ersten Fehler zu beseitigen und dann werden wir sehen :)
Danke!!! Sehr gut verstanden und schön geschrieben. Ich habe SymbolSelect() in meinem EA. Ich habe es mit dem Code auf pg. 53, wenn Sie es brauchen, können Sie es sehen. Ich habe es mit der Hilfe überprüft - es ist korrekt!!! Wenn dieses Paar also vom Terminal bereitgestellt wird, was soll ich dann denken?
Außerdem, wenn die First in line-Fehler am unteren Ende des Terminals sind. Warum wechseln sich die Fehlermeldungen des Druckers und des Terminals nicht ab - nein, sie sind zusammengefaßt?
Vielleicht meldet das Terminal den Fehler bei dieser Funktion nicht?
Offensichtlich nicht diese!!! Oder das hier, aber nicht so. Erst wechseln sich die Programmmeldungen (Drucker) und die Meldungen des Terminals wirklich ab, und dann kommt plötzlich - und zwar 10-12 mal auf einmal - genau der Fehler 4002!!!
Könnten Sie mir bitte sagen, wie der Druck mit variablem Zeitrahmen aussehen soll, kann er digital sein? Ich sehe eine, ich meine, die Nummer eins wird angezeigt.
///////////////////////////////////////////////////////////////////////////////////////////////////////double iMAf( string symbol, ENUM_TIMEFRAMES timeframe, int period, int mama_shift, ENUM_MA_METHOD mama_method, int applied_pricece, int shift){
Print ( " iMAfsymbol ",symbol," iMAftimeframe ",timeframe," iMAfperiod ",period," iMAfmama_shift ",mama_shift ," iMAfmama_method ",mama_method,
" iMAfapplied_pricece ", applied_pricece," iMAfshift ",shift);
MA_handle=iMA(symbol,timeframe,periodd(period),mama_shift, mama_method,applied_pricece);Sleep(2000);
//--- если не удалось создать хэндлif(MA_handle==INVALID_HANDLE)
{
//--- сообщим о неудаче и выведем номер ошибкиPrintFormat("Не удалось создать хэндл индикатора iMA для пары %s/%s, код ошибки %d",
symbol,
EnumToString(timeframe),
GetLastError()); ResetLastError();return (0.0);}
CopyBuffer( MA_handle,0,0,100,MA);
ArraySetAsSeries(MA,true);
if(shift>99) return(0);
return( (MA[shift])); }
///////////////////////////////////////////////////////////////////////////////////////////////////////
Ich frage warum. Dies ist eine Funktion, sie hat eine Zeile mit den Ausdrucken. Die zweite von oben entsprechend.
/////////////////////////////////////////////////////////////////////
int Distance_from_MA(string symbb)
{
double MAMA = iMAf( symbb, periodd(TFMA), periodMA, ma_shift, ma_method, applied_price, 0);
int spread = (int) MathRound(SymbolInfoInteger(symbb,SYMBOL_SPREAD));
double point = SymbolInfoDouble(symbb,SYMBOL_POINT);
if(SymbolInfoInteger(symbb,SYMBOL_DIGITS) == 3 || SymbolInfoInteger(symbb,SYMBOL_DIGITS) == 5)
{spread = (int) MathRound(SymbolInfoInteger(symbb,SYMBOL_SPREAD)/10);
point = SymbolInfoDouble(symbb,SYMBOL_POINT)*10;}
if(iClose(symb,TF_Price,0)+(spread*point)+(Min_Distance_from_MA*point)<=MAMA) return(-1);
if(iClose(symb,TF_Price,0)-(Min_Distance_from_MA*point)>=MAMA) return (1);
return(0);
}
////////////////////////////////////////////////////////////////////
Beachten Sie, dass ich eine andere Funktion in der Aufrufzeile verwende. Sie wird zur Verurteilung des Zeitrahmens verwendet. Es ist so, weil mein Expert Advisor von 4 pyrivided worden ist. Ich habe darinFallöffner verwendet.Später fügte ich vorsichtshalber F zu F4 Zeitrahmen hinzu, um sie weiter zu verwenden.
Dimka-novitsek: Bitte sagen Sie mir, wie der variable Druck des Zeitrahmens aussehen soll, kann er numerisch sein? Ich sehe eine, ich meine, die Nummer eins wird angezeigt.
Dimka-novitsek: Ich danke Ihnen! Lassen Sie mich das noch einmal betrachten.
Ich glaube, ich habe herausgefunden, wo das Problem liegen könnte. Ich werde es jetzt beschreiben.
Aus dem Bild können Sie ersehen, dass der EA auf M1, Timeframe==1, Period==140 läuft. Ist das richtig?
Der Wert timeframe==1 bedeutet höchstwahrscheinlich, dass timeframe==M1 ist. Gleichzeitig bedeutet der Eintrag periodd(period) periodd(140). Laut Code muss die Funktion periodd(140) den Wert PERIOD_CURRENT zurückgeben. Es stellt sich also heraus, dass periodd(140)==M1. Und das bedeutet, dass der iMA-Aufruf wie folgt aussieht: iMA(Symbol,M1,M1...) Ich weiß nicht, ob es bei der Berechnung von iMA akzeptabel ist, dass der Wert des zweiten Arguments mit dem Wert des dritten Arguments übereinstimmt (d.h. dass die Periode mit der Mittelungsperiode übereinstimmt), aber irgendetwas sagt mir, dass das falsch ist.
Ich erhalte den exakten Wert, aber ich kann den "Obem_Pozic"-Wert nicht auf 1,00 setzen, so dass ich die Menge für die Anzeige berechnen kann, ich möchte ihn nicht normalisieren, sondern nur 4 Dezimalstellen ausgeben.
Ich schreibe in MQL4.
Ich frage nach MQL4 in dem entsprechenden Forum, hier ist es ein A.
Sie sollten DoubleToStr() verwenden, um genauere Werte auf dem Bildschirm anzuzeigen.
Dieses Paar wird wahrscheinlich vom Terminal bereitgestellt und muss nur noch angeschlossen werden. Wenn manuell, dann in Market Watch. Und wenn es ein erwachsenes ist, sollte es manuell mit SymbolSelect() gemacht werden.
Sobald Sie einen Fehler haben, werden andere folgen. Die ersten Fehler befinden sich am unteren Ende des Terminals. Wir sollten also versuchen, die ersten Fehler zu beseitigen und dann werden wir sehen :)
Danke!!! Sehr gut verstanden und schön geschrieben. Ich habe SymbolSelect() in meinem EA. Ich habe es mit dem Code auf pg. 53, wenn Sie es brauchen, können Sie es sehen. Ich habe es mit der Hilfe überprüft - es ist korrekt!!! Wenn dieses Paar also vom Terminal bereitgestellt wird, was soll ich dann denken?
Außerdem, wenn die First in line-Fehler am unteren Ende des Terminals sind. Warum wechseln sich die Fehlermeldungen des Druckers und des Terminals nicht ab - nein, sie sind zusammengefaßt?
Vielleicht meldet das Terminal den Fehler bei dieser Funktion nicht?
Ja, das kann ich sehen. Versuchen wir es auf diese Weise:
Ich danke Ihnen!!! !!
Könnten Sie mir bitte sagen, wie der Druck mit variablem Zeitrahmen aussehen soll, kann er digital sein? Ich sehe eine, ich meine, die Nummer eins wird angezeigt.
Ich frage warum. Dies ist eine Funktion, sie hat eine Zeile mit den Ausdrucken. Die zweite von oben entsprechend.
Hier ist der Funktionsaufruf.
///////////////////////////////////////////////////////////////////// int Distance_from_MA(string symbb) { double MAMA = iMAf( symbb, periodd(TFMA), periodMA, ma_shift, ma_method, applied_price, 0); int spread = (int) MathRound(SymbolInfoInteger(symbb,SYMBOL_SPREAD)); double point = SymbolInfoDouble(symbb,SYMBOL_POINT); if(SymbolInfoInteger(symbb,SYMBOL_DIGITS) == 3 || SymbolInfoInteger(symbb,SYMBOL_DIGITS) == 5) {spread = (int) MathRound(SymbolInfoInteger(symbb,SYMBOL_SPREAD)/10); point = SymbolInfoDouble(symbb,SYMBOL_POINT)*10;} if(iClose(symb,TF_Price,0)+(spread*point)+(Min_Distance_from_MA*point)<=MAMA) return(-1); if(iClose(symb,TF_Price,0)-(Min_Distance_from_MA*point)>=MAMA) return (1); return(0); } ////////////////////////////////////////////////////////////////////Beachten Sie, dass ich eine andere Funktion in der Aufrufzeile verwende. Sie wird zur Verurteilung des Zeitrahmens verwendet. Es ist so, weil mein Expert Advisor von 4 pyrivided worden ist. Ich habe darinFallöffner verwendet.Später fügte ich vorsichtshalber F zu F4 Zeitrahmen hinzu, um sie weiter zu verwenden.
Und das ist, was ich sehe
Nun, gerade unten in diesem Code wird verwendet
EnumToString(timeframe),Ich glaube, ich habe herausgefunden, wo das Problem liegen könnte. Ich werde es jetzt beschreiben.
Aus dem Bild können Sie ersehen, dass der EA auf M1, Timeframe==1, Period==140 läuft. Ist das richtig?
Der Wert timeframe==1 bedeutet höchstwahrscheinlich, dass timeframe==M1 ist. Gleichzeitig bedeutet der Eintrag periodd(period) periodd(140). Laut Code muss die Funktion periodd(140) den Wert PERIOD_CURRENT zurückgeben. Es stellt sich also heraus, dass periodd(140)==M1.
Und das bedeutet, dass der iMA-Aufruf wie folgt aussieht: iMA(Symbol,M1,M1...) Ich weiß nicht, ob es bei der Berechnung von iMA akzeptabel ist, dass der Wert des zweiten Arguments mit dem Wert des dritten Arguments übereinstimmt (d.h. dass die Periode mit der Mittelungsperiode übereinstimmt), aber irgendetwas sagt mir, dass das falsch ist.