Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
bool order= 0;
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Ihre doppelte Deklaration von Ticket .
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Die Deklaration von ticket versteckt ... blah blah ? siehe ich bin der menschliche Compiler.
Entferne das zweite int .
Ich habe
bool Bestellung und
int ticket
auf globale Variablen gesetzt und den Rest des Codes auf OnTick, aber trotzdem macht er jetzt keinen Eintrag
Unkompiliert, ungetestet
{
double up = iIchimoku(NULL,5,9,26,52,3,0),
down = iIchimoku(NULL,5,9,26,52,4,0);
static bool was_above = true;
bool is_above = (MathMax(up,down)< Bid);
if(!was_above && is_above && open_orders()<1)
{
if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
{
printf("OrderSend() failed. Error code: %i",GetLastError());
}
}
was_above = is_above;
}
int open_orders()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
{
if(!OrderSelect(i,SELECT_BY_POS)) continue; // select the order
if(OrderSymbol() != _Symbol) continue; // optional check for same symbol
if(OrderMagicNumber()!= magic_no) continue; // optional check for magic number
if(OrderType() < 2) count++; // 0 == OP_BUY and 1 == OP_SELL
}
return(count);
}
Marco: Ich entfernte die doppelte int, aber jetzt kein Handel gemacht wird, ich brauche 1 Handel, wenn Preis> ichimoku Wolke, dass Code zunächst war groß, aber es weiterhin neue Trades zu erstellen, wenn
der Preis war über die Wolke, ich brauche nur Hilfe, um Code in einer Weise, dass das Skript nach dem 1 Handel zu stoppen.
Honest Knave: Ich habe versucht, Ihren Code, ich habe gerade definiert magic_no, die fehlte, es funktioniert gut, es wartet auf den neuen Handel der Preis berühren die Wolke wieder, es wird wirklich nützlich sein für nächste Projekte, aber
ich brauche es nur zu stoppen, nachdem die 1º Handel, was soll ich tun?
Vielen Dank an alle für Ihre Hilfe
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Das ist das Problem.
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket>-1)
{
order=1;
}
}
}
}
Versuchen Sie also Folgendes, worauf ich bereits in einigen Beiträgen hingewiesen habe.
Beachten Sie auch, dass OrderSend entweder die Ticketnummer zurückgibt, oder -1 minus eins, wenn es fehlschlägt.
Ehrlich Knave: Ich habe versucht, Ihren Code, ich habe gerade definiert magic_no, die fehlte, es funktioniert gut, es wartet auf neue Handel, wenn der Preis berührt die Wolke wieder, es wird wirklich nützlich sein für die nächsten Projekte, aber
ich brauche es nur zu stoppen, nachdem die 1 Handel, was sollte ich tun?
Vielen Dank an alle für Ihre Hilfe
Es sollte nicht mehr als 1 Handel machen...? Das ist, was dies tut:
{
double up = iIchimoku(NULL,5,9,26,52,3,0),
down = iIchimoku(NULL,5,9,26,52,4,0);
static bool was_above = true;
bool is_above = (MathMax(up,down)< Bid);
if(!was_above && is_above && open_orders()<1)
{
if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
{
printf("OrderSend() failed. Error code: %i",GetLastError());
}
}
was_above = is_above;
}
int open_orders()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
{
if(!OrderSelect(i,SELECT_BY_POS)) continue; // select the order
if(OrderSymbol() != _Symbol) continue; // optional check for same symbol
if(OrderMagicNumber()!= magic_no) continue; // optional check for magic number
if(OrderType() < 2) count++; // 0 == OP_BUY and 1 == OP_SELL
}
return(count);
}
Ehrlicher Knave:
Ihr EA ist großartig, aber es schafft neue Trades, wenn der Preis geht wieder nach unten zu ichimoku Wolke und dann wieder nach oben. Es doesnt wiederholen die Aufträge in der gleichen Kerze, wie das Problem, das ich hatte, und ich werde eine Menge lernen, durch diese Probe, die Sie mir gegeben haben, um neue zu erstellen
EA's, aber ich brauche einen Weg, um Code, der nach dem ersten Handel, der EA oder Skript wird sofort schließen, so dass ich nur 1 Handel jemals gemacht brauchen.
Marco: Ich habe Ihr neues Update ausprobiert, aber es macht keinen Handel, ich habe nur die Art und Weise, wie Sie zuletzt gepostet haben, nur die zweite int entfernt, in das Ticket. Aber der erste Handel ist nie auf Strategie-Tester gemacht, was jetzt zu tun?
Ehrlicher Knave:
Ihr EA ist großartig, aber es schafft neue Trades, wenn der Preis geht wieder nach unten zu ichimoku Wolke und dann wieder nach oben. Es doesnt wiederholen die Aufträge in der gleichen Kerze, wie das Problem, das ich hatte, und ich werde eine Menge lernen, durch diese Probe, die Sie mir gegeben haben, um neue zu erstellen
EA's, aber ich brauche einen Weg, um Code, dass nach dem ersten Handel, der EA oder Skript wird sofort schließen, so dass ich nur 1 Handel jemals gemacht.
Ich verstehe nicht, was Sie meinen.
Dieser Code kann nicht mehr als 1 Order auf einmal öffnen.
Aber wenn der Auftrag geschlossen wird und der Auslöser erneut auftritt, wird ein weiterer geöffnet.
Meinen Sie damit, dass nur ein Handel JEMALS geöffnet werden soll?
Ich verstehe nicht, was Sie meinen.
Dieser Code kann nicht mehr als 1 Auftrag auf einmal öffnen.
Aber wenn der Auftrag geschlossen wird und der Auslöser erneut auftritt, wird ein weiterer geöffnet.
Meinen Sie, dass nur ein Handel JEDES Mal geöffnet werden soll?