Wie programmiert man? - Seite 321

 
mladen:
dasio

Versuchen Sie etwas wie dies:

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

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

if (countedBars>0) countedBars--;

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

for(i=limit; i>=0; i--)

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

int y = iBarShift(NULL,PERIOD_D1,Time);

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

Mladen Ich habe es versucht, aber ohne Erfolg.

Im Anhang befindet sich ein Beispiel meines Indikators. Die einzigen Unterschiede sind in den Berechnungen, aber das andere ist das gleiche.

Können Sie Ihre Formel integrieren, damit ich sie auch studieren kann.

Dankeschön

test1.mq4

Dateien:
test1.mq4  3 kb
 

Hallo zusammen. Ich suche schnelle Hilfe, um eine Codezeile für ein Signal zu schreiben.

Ich bin mit Step_Indy und ein EMA Kreuz für Signal. Was ich tun möchte ist, haben die EA Handel nur eingeben, wenn beide ein Signal innerhalb von 10 Bars von einander geben.

Also sagen, dass der Schritt ein Signal gibt, möchte ich die EA zurück 10 Bars zu sehen, ob es ein MA Kreuz, wenn ja eingeben. (Beachten Sie, dass ich nicht will, dass es nur überprüfen und sehen, wenn die MA Kreuz aktuelle Signal lang ist, ich will es kürzlich wie innerhalb von 10 Bars gewesen sein)

TIA für jede Hilfe, ich glaube nicht, dass ich gesehen habe, dies in der Vergangenheit in jeder EA, die ich angesehen habe, getan.

 

dasio

Aus dem Code kann ich nicht erkennen, was die Absicht des Codes ist. Wie auch immer, hier ist ein Code, in dem Sie wählen können, ob Sie den wahren Bereich als "Basis"-Wert des Indikators verwenden möchten (es ist der erste Teil Ihres Codes) oder Sie möchten den zweiten Teil Ihres Codes als "Basis"-Wert verwenden

dasio:
Mladen Ich habe es versucht, aber ohne Erfolg.

Im Anhang finden Sie ein Beispiel für meinen Indikator. Die einzigen Unterschiede sind in den Berechnungen, aber das andere ist das gleiche.

Können Sie Ihre Formel integrieren? damit ich sie auch studieren kann.

Dankeschön

test1.mq4
Dateien:
_test1.mq4  2 kb
 

Signal Probleme

Mladen, vielen Dank noch einmal, der Alarm nicht mehr wiederholen, funktioniert gut.....aber ich möchte einen Stop sgnal.....und ich schrieb den folgenden Code, der Kauf und Verkauf Signal funktioniert, aber die Buy Stop und Sell Stop ist nicht funktionieren, siehe den Code unten:

//-----Assigning Alarts----

if(Zeitraum()==240){

static datetime lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PREIS_SCHLIESSEN,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PREIS_TYPISCH,0);

double b4trCCI=iCCI(NULL,240,14,PREIS_TYPISCH,1);

double nowtrCCI=iCCI(NULL,240,14,PREIS_TYPISCH,0);

// Handelswarnungen

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&nowenCCI>b4enCCI)&&(nowtrCCI>0&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0];

Alert("Kaufen","\n","Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_m_h4>di_p_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&(nowtrCCI<0&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0];

Alert("Sell","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

}

// Alarme stoppen

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP10&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&nowenCCI>b4enCCI)&&(nowtrCCI<0&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0];

Alert("Stop Buy","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_p_h4ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_main<ist_signal)&&(RSIP10&&nowenCCI>b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0];

Alert(" Stop Sell","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

}

mladen:
Versuchen Sie Folgendes:
if(Period()==240)

{

static datetime lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// alerts

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI >0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Buy Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI <0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Sell Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

}
 
mladen:
dasio Aus dem Code kann ich nicht erkennen, was die Absicht des Codes ist. Wie auch immer, hier ist ein Code, in dem du wählen kannst, ob du den wahren Bereich als "Basis"-Wert des Indikators verwenden möchtest (es ist der erste Teil deines Codes) oder du möchtest den zweiten Teil deines Codes als "Basis"-Wert verwenden

Danke, mladen.

Ich weiß, dass es keinen Sinn macht, auf diese Weise zu rechnen. Aber ich versuche, eine Analyse zu programmieren, die ich jeden Tag mache. ^^

Es ist nur 1/3 der Arbeit.

Dankeschön

 
mladen:
dasio Aus dem Code kann ich nicht erkennen, was die Absicht des Codes ist. Wie auch immer, hier ist ein Code, in dem Sie wählen können, ob Sie den wahren Bereich als "Basis"-Wert des Indikators verwenden möchten (es ist der erste Teil Ihres Codes) oder Sie möchten den zweiten Teil Ihres Codes als "Basis"-Wert verwenden

Danke, das ist perfekt.

Ist es möglich, das Freitagsfix hinzuzufügen?

Ich danke Ihnen dafür.

Mit freundlichen Grüßen

 

Volumen

ich möchte das Volumen jedes Balkens abfragen, aber ich habe keine Ahnung, wie ich es angehen soll. Ich bin neu in der mql4-Programmierung, aber ich versuche zu lernen, dass ich dieses einfache Programm versucht habe, aber es kann kompletter Müll sein, bitte lassen Sie es mich wissen, und alle Vorschläge wären willkommen. unten ist der Anfang des Skripts, um das Volumen eines Balkens abzufragen und dann das Ergebnis zu drucken, bitte lassen Sie mich wissen, was ich falsch mache!!!! versuchen zu kompilieren, es gibt einen Fehler, der sagt (Ende der Programmendklammer } erwartet.

//--- Eingabeparameter

extern double TakeProfit = 4;

extern double StopLoss = 20;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double volumemore = 600;

extern double volumeless = 150;

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

//| Experten-Initialisierungsfunktion |

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

int start()

{

if (Volumen=>Volumemore)

{

Print ("Volumen mehr");

{

if (Volumen=<Volumenlos)

{

Print ("Volumen weniger");

if(Balken<20)

{

Print("Balken weniger als 20");

{

//----

//----

return (0);

}

 

Verwenden Sie Volume, wobei "index" die Nummer des Balkens ist, für den Sie das Volumen sehen möchten. Denken Sie daran, dass im Metatrader 4 das "Volumen" immer das Tick-Volumen ist.

Tim Latham:
ich möchte das Volumen jedes Balkens abfragen, aber ich habe keine Ahnung, wie ich es angehen soll, ich bin neu in der mql4-Programmierung, aber ich versuche zu lernen, ich habe dieses einfache Programm ausprobiert, aber es kann kompletter Müll sein, bitte lassen Sie es mich wissen, und alle Vorschläge wären willkommen. unten ist der Anfang des Skripts, um das Volumen eines Balkens abzufragen und dann das Ergebnis auszudrucken, bitte lassen Sie mich wissen, wo ich etwas falsch mache!!!! versuchen Sie zu kompilieren, es gibt einen Fehler, der sagt (Ende des Programms Endklammer } erwartet.

//--- Eingabeparameter

extern double TakeProfit = 4;

extern double StopLoss = 20;;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double volumemore = 600;

extern double volumeless = 150;

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

//| Experten-Initialisierungsfunktion |

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

int start()

{

if (Volumen=>Volumemore)

{

Print ("Volumen mehr");

{

if (Volumen=<Volumenlos)

{

Print ("Volumen weniger");

if(Balken<20)

{

Print("Balken weniger als 20");

{

//----

//----

return (0);

}
 
jayjonbeach:
Hallo zusammen. Ich suche schnelle Hilfe, um eine Codezeile für ein Signal zu schreiben.

Ich verwende Step_Indy und ein EMA-Kreuz als Signal. Was ich tun möchte ist, haben die EA Handel nur eingeben, wenn beide ein Signal innerhalb von 10 Bars von einander geben.

Also sagen, dass der Schritt ein Signal gibt, möchte ich die EA zurück 10 Bars zu sehen, ob es ein MA Kreuz, wenn ja eingeben. (Beachten Sie, dass ich nicht will, dass es nur überprüfen und sehen, ob die MA Kreuz aktuelle Signal lang ist, ich will es kürzlich wie innerhalb von 10 Bars gewesen sein)

TIA für jede Hilfe, ich glaube nicht, dass ich gesehen habe, dies in der Vergangenheit in jeder EA, die ich gesehen habe.

Nun habe ich versucht, ein paar Dinge, aber so weit nichts hat funktioniert.

Hier ist eine der Möglichkeiten, die ich versucht habe:

extern int lookback = 10;

extern int EMA1 = 21;

extern int EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest );

int trendPrev = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1);

double TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

double FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(TwentyOneEMA > FiftyFiveEMA)

{

if(trendCurr>0)

{

for(int i=1; i<=Bars-lookback; i++)

{

if (TrendCurr<0)

return(LONG);

sonst return(NONE);

}

}

}

if(TwentyOneEMA < FiftyFiveEMA)

{

wenn (trendCurr<0)

{

for(int i2=1; i2<=Bars-lookback; i2++)

{

if (TrendCurr>0)

return(SHORT);

sonst return(NONE);

}

}

}

return(NONE);

}

Jede Idee ist willkommen, ich habe auch versucht (int i=1; i<=lookback; i++)

 

...

jayjonbeach,

Sie testen den Wert von trendCurr immer wieder in der Schleife, ohne ihn zu ändern (daher wird immer NONE zurückgegeben)

Versuchen Sie, iCustom() in die Schleife einzufügen und dann diesen Wert zu testen. Etwa so:

if (trendCurr>0)

{

for(int i=1; i<=lookback; i++)

{

int testValue = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+i);

if (testValue<0) return(LONG);

}

return(NONE);

}

jayjonbeach:
Ich habe einige Dinge ausprobiert, aber bisher hat nichts funktioniert.

Hier ist eine der Möglichkeiten, wie ich das versucht habe:

extern int lookback = 10;

extern int EMA1 = 21;

extern int EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest);

int trendPrev = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1);

double TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

double FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(TwentyOneEMA > FiftyFiveEMA)

{

if(trendCurr>0)

{

for(int i=1; i<=Bars-lookback; i++)

{

if (TrendCurr<0)

return(LONG);

sonst return(NONE);

}

}

}

if(TwentyOneEMA < FiftyFiveEMA)

{

wenn (trendCurr<0)

{

for(int i2=1; i2<=Bars-lookback; i2++)

{

if (TrendCurr>0)

return(SHORT);

sonst return(NONE);

}

}

}

return(NONE);

}

Jede Idee ist willkommen
Grund der Beschwerde: