Hilfe bei der Codierung - Seite 405

 
Tomcat98:
Hallo Mladen,

So sieht die Schleife für die schwebenden Aufträge aus, bei denen Multi_Indic_00 ein Oszillator und Up_Prime_00 ein definiertes Niveau ist.

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

//---- Prüfen und schließen, wenn der Ordertyp Limit ist und sich der Trend geändert hat.

if(OrderType()==OP_BUYLIMIT)

if(( Multi_Indic_00 ) <= (Up_Prime_00 ))

{

_OrderDelete=OrderDelete(OrderTicket());

}

if(OrderType()==OP_SELLLIMIT)

if(( Multi_Indic_00 ) >= ( Down_Prime_00 ))

{

_OrderDelete=OrderDelete(OrderTicket());

}

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

Nun, nichts Besonderes....

Viel Spaß beim Handeln.

Mit freundlichen Grüßen.

Kater98

Tomcat98

Was ich gerne sehen würde, ist die for() Schleifenanweisung. Wenn Sie eine for-Anweisung wie diese haben :

for (int i = 0; i < OrdersTotal(); i++)

dann werden einige Aufträge übersehen, wenn in der Zwischenzeit einige Aufträge geschlossen oder gelöscht wurden. Wenn die for()-Schleife hingegen wie folgt aussieht:

for (int i = OrdersTotal()-1; i >= 0; i--)

dann werden alle Aufträge verarbeitet

 

Mladen ,

Oh, ich verstehe:

Hier ist es für den Abschlussprozess:

"

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;

"

Tomcat98

 
Tomcat98:
Mladen ,

Ach so, ich verstehe:

Hier ist es für den Abschlussprozess:

"

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;

"

Kater98

Tomcat98

Ändern Sie die Schleife in

for(int i=BestellungenGesamt()-1;i>=0;i--)

und es sollte OK sein

 

Mladen,

Bingo!

Es tut jetzt genau das, was ich brauchte.

Vielen Dank für deine großartige Hilfe.

"Die Leute interessiert es nicht, wie viel du weißt, bis sie wissen, wie sehr du dich kümmerst.

- Theodore Roosevelt

Mit freundlichen Grüßen.

Kater98

 
Tomcat98:
Mladen,

Bingo!

Jetzt tut es genau das, was ich brauchte.

Vielen Dank für Ihre großartige Hilfe.

"Die Leute interessiert es nicht, wie viel du weißt, bis sie wissen, wie sehr du dich kümmerst.

- Theodore Roosevelt

Mit freundlichen Grüßen.

Kater98

Fröhliche Codierung

 

Hallo Mladen, danke für alles, es funktioniert jetzt gut...

jetzt bin ich mit einem Indikator erstellt, die nicht neu geladen wird, so dass jedes Mal eine Kerze schließen ich den Indikator neu laden müssen, können Sie mir helfen, dies zu beheben?? hier ist ein Teil des Codes (ist ein Trend-Indikator auf Lücken einfache Idee, danke:

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#Eigenschaft indicator_color1 clrLime

#Eigenschaft indicator_color2 clrRed

#Eigenschaft indicator_color3 clrMagenta

#Eigenschaft indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((Hoch-Schluss)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when, "Buy");}

lastSignal=BUY;}

if((Tief-Schluss)>0){

if(letztesSignal==BUY) {

FirstSell=Close;

SoundAlert(when, "Sell");}

lastSignal=SELL;}

}

return(rates_total);}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s Signal an %s um %s",dir,Symbol(),TimeToStr(i)));

 
daniel1983:
Hi Mladen, danke für alles, funktioniert jetzt gut...

jetzt bin ich mit einem Indikator erstellt, die nicht neu geladen wird, so dass jedes Mal eine Kerze schließen ich den Indikator neu laden müssen, können Sie mir helfen, dies zu beheben?? hier ist ein Teil des Codes (ist ein Trend-Indikator auf Lücken einfache Idee basiert, danke:

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#Eigenschaft indicator_color1 clrLime

#Eigenschaft indicator_color2 clrRed

#Eigenschaft indicator_color3 clrMagenta

#Eigenschaft indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((Hoch-Schluss)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when, "Buy");}

lastSignal=BUY;}

if((Tief-Schluss)>0){

if(letztesSignal==BUY) {

FirstSell=Close;

SoundAlert(when, "Sell");}

lastSignal=SELL;}

}

return(rates_total);}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s Signal an %s um %s",dir,Symbol(),TimeToStr(i)));

daniel1983

Versuchen Sie es so:

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link ""

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicator_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-2); i>=0; i--)

{

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when,"Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

if(lastSignal==BUY) {

FirstSell=Close;

SoundAlert(when,"Sell");}

lastSignal=SELL;}

}

return(rates_total);

}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));

}

}

 

Hallo Mladen, danke, aber wenn ich den Code so schreibe, fehlen die Signale. Bitte schauen Sie sich das an, ich habe ein Bild gemacht, in dem ich sie auf dem Tages-Chart USDJPY vergleiche:

Woran kann das liegen?

Dateien:
 
daniel1983:
Hallo Mladen, danke, aber wenn ich den Code so schreibe, fehlen die Signale. Bitte schauen Sie sich das an, ich habe ein Bild gemacht, in dem ich sie auf dem Tages-Chart USDJPY vergleiche:

Woran kann das liegen?

daniel1983

In Ihrem Code haben Sie Future-Werte (diese :

Hoch-Schluss

Tief-Schluss

Ich habe Close verwendet - was ein normaler vorheriger Wert ist. Ändern Sie es auf aber dann wird es neu gezeichnet

 

Liebe mrtools und mladen

kann mir jemand helfen? Tom Demark Moving Average ist ein Schlüsselindikator in meiner Strategie, jedoch wäre ein Alarm sehr nützlich, wenn ein neuer Boden angezeigt wird; ich wäre sehr dankbar, wenn ein Alarm in den Indikator codiert werden könnte. Ich freue mich auf Ihre freundliche Unterstützung.

Vielen Dank!