Wie programmiert man? - Seite 54

 

Andere Frage

jetzt mein EA wie folgt

if(FastMA2 SlowMA1)

{

ClosePositions();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"",MAGIC,0,Blue);

return(0);

Ich möchte Folgendes ändern

1. 15minutus timeflame passieren kaufen Zeichen

2. wenn dann 5Minuten timeflame MA kreuzt bereits Kaufzeichen, auch

ClosePosition. und neue Position erhalten

wenn dann 5Minuten timeflame MA ändern bereits verkaufen Zeichen

warte 5minutes timeflame change buy sign ,

dann ClosePosition. und erhalten Sie eine neue Position

Bitte sagen Sie mir, wie ich dieses Programm schreiben kann.

 
Dateien:
 

Hallo

Ich bin auf der Suche nach etwas Hilfe, die ich habe ein EA, die ich bin mit auf Demo und auch lernen, mit Code. Ich versuche herauszufinden, wie man einen Kommentar zum System hinzufügen, um mir zu zeigen, welche der 4 Eintrag Kriterien verwendet wurde, um die Position zu öffnen. z.B. wenn long2 verwendet wurde, dann zeigen long2 Signal

Jede Hilfe wäre großartig

Danke

Beno

 
Beno:
Hallo

Ich bin auf der Suche nach etwas Hilfe, die ich habe ein EA, die ich bin mit auf Demo und auch lernen, mit Code. Ich versuche herauszufinden, wie man einen Kommentar zum System hinzufügen, um mir zu zeigen, welche der 4 Eintrag Kriterien verwendet wurde, um die Position zu öffnen. z.B. wenn long2 verwendet wurde, dann zeigen long2 Signal

Jede Hilfe wäre großartig

Danke

Beno

Nachdem Ihre Bedingung erfüllt ist und Sie den Befehl Ordersend() verwendet haben, fügen Sie einfach eine Comment(), Alert() oder Print() Anweisung ein. Was auch immer Sie verwenden möchten.

Zum Beispiel so:

if ( long2 == true)

{

Ordersend();

{

Print(" long2 Signal genommen ");

}

}

Ich hoffe, das hilft.

 

Danke Wolfe

Ich musste lachen, ich habe eingegeben, was Sie vorgeschlagen haben, und es hat irgendwie funktioniert, aber jetzt habe ich nur den Kommentar und keine Positionen zu öffnen. irgendwelche Tipps

bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];

bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift];

bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift];

bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift];

bool Long4 = zscore>0.0 && ma<Close[shift];

bool Short4 = zscoreClose[shift];

buysig = Long || Long2 || Long3 || Long4;

sellsig = Short || Short2 || Short3 || Short4;

closebuy=sellsig;

closesell=buysig;

if (curprof>=AccountBalance()*ProfitExit/100.0) {

exit=true;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true;

}

}

void CheckForOpen() {

int res,tr;

//---- Verkaufsbedingungen

co=CalculateCurrentOrders(Symbol());

if(sellsig && lastsig!=-1) {

co=CalculateCurrentOrders(Symbol());

wenn (co==0) {

if ( Short == true)

wenn ( Short2 == wahr)

wenn ( Short3 == wahr)

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

Print(" Short-Signal genommen ");

Print(" Short2-Signal aufgenommen ");

Print(" Short3-Signal aufgenommen ");

Print(" Short4-Signal aufgenommen ");

}

lastsig=-1;

last=Time[0];

zurück;

}

//---- Kaufbedingungen

if(kaufsig && lastsig!=1) {

co=CalculateCurrentOrders(Symbol());

wenn (co==0) {

wenn ( Long == wahr)

wenn ( Long2 == wahr)

wenn ( Long3 == wahr)

wenn ( Long4 == wahr)

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

Print(" Long-Signal genommen ");

Print(" Long2-Signal genommen ");

Print(" Long3-Signal genommen ");

Print(" Long4-Signal genommen ");

}

last=Time[0];

lastsig=1;

zurück;

}

}

Behoben Danke

 

Code debuggen

Wie und wo würden Sie ein Stückchen Code wie dieses verwenden. Ich habe einen Fehler bei der Nullteilung und kann nicht herausfinden, wie ich ihn beheben kann.

extern bool DEBUGGING = true

...

if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- Diese Variable ist jetzt ", variableName);

... mehr Code

if(DEBUGGING && Variablenname == 0) Print("CodePoint 2 -- Diese Variable ist jetzt ", Variablenname);

... mehr Code

if(DEBUGGING && Variablenname == 0) Print("CodePoint 3 -- Diese Variable ist jetzt ", Variablenname);

...

 

Können Sie mir helfen? Warum gibt es viele Fehler im Code?

Dies ist zur Berechnung von SMMA:

for(j=0;j<Bars;j++)

{

for(i=0,sum=0;i<ma_period;i++)

{

sum=sum+Close[j+i];

// buffer[j]=(sum-sum/ma_period+Close[j+i])/ma_period;

}

buffer[j]=(sum-sum/ma_period+Close[j])/ma_period;

}

Dies dient der Berechnung von LWMA

for(j=0;j<Bars;j++)

{

for(i=0,sum=0,sum1=0;i<ma_period;i++)

{

sum=sum+Close[j+i];

sum1=sum1+Close[j+i]*(j+i);

// buffer[j]=sum/ma_period;

}

buffer[j]=sum1/sum;

}

und wie berechnet man den EMA?

 

Frage zu Indikatoren

Hallo zusammen.

Ich stecke in einem Programmierproblem fest. Weiß jemand, wie man das Ergebnis eines Indikators verwendet, um eine andere Einstellung zu ändern? Zum Beispiel, wenn der tägliche Stockasti über 20 war, würde ich einen gleitenden Durchschnitt von (x) wollen. Ich habe versucht, den unten stehenden Code zum Laufen zu bringen, aber ohne Erfolg. Ich scheine nicht in der Lage zu sein, den Schalter oder den if else-Befehl zum Funktionieren zu bringen.

double fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

double daystoch20 = 20;

if (tagstoch1 > tagstoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

 
ajk:
Hallo zusammen!

Ich stecke in einem Programmierproblem fest. Weiß jemand, wie man das Ergebnis eines Indikators verwendet, um eine andere Einstellung zu ändern? Zum Beispiel, wenn der tägliche Stockasti über 20 war, würde ich einen gleitenden Durchschnitt von (x) wollen. Ich habe versucht, den unten stehenden Code zum Laufen zu bringen, aber ohne Erfolg. Ich scheine nicht in der Lage zu sein, den Schalter oder den if else-Befehl zum Funktionieren zu bringen.

double fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

double daystoch20 = 20;

if (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

Wo ist die Variable deines MA?

Vielleicht könnte dies helfen

double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);

Wenn sich die Stoch-Berechnung in derselben Schleife befindet, sagen wir "for(int shift=limit-1; shift>=0; shift--)", sollte der Stoch-Code lauten

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1);

CMIIW

 

Ein wenig Hilfe bei einem Indikator - Coder's Please Look

Ich teste eine MT4-Broker-Plattform, die Fractional Pips (Pipetten) in ihren Kursnotierungen verwendet: Zum Beispiel auf EURJPY sie zitieren als 164,381 statt 164,38 - Dies bedeutet, dass der Spread hat eine dezimale wie 4,1 Pips (statt 4).

Kann mir jemand sagen, wie ich den folgenden Code so ändern kann, dass der Spread richtig angezeigt wird? Im Moment würde ein Spread von 4,1 Pips als 41,0 im Indikator angezeigt. Für jede Hilfe bin ich dankbar.

Dan

//---- spread

Spread=NormalizeDouble((Ask-Bid)/Point,1);

ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor);

ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor);