[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 67

 

Ich habe dem Skript Zeilen hinzugefügt (BUYSTOP und SELLSTOP), aber es lässt sich nicht kompilieren, sondern gibt Fehler. Können Sie mir bitte sagen, was los ist?

#property copyright "Copyright © 2010, Khlystov Vladimir".
#property link "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0, //level of SL, if 0, SL is not exhibited
extern int takeprofit = 0, //t TP level, wenn 0, wird TP nicht ausgestellt
extern int Magic = 123456; //Nummer einer Bestellung
extern bool BUY = false; //Kaufauftrag eröffnen
extern bool SELL = false; //Verkaufsauftrag eröffnen
extern bool BUYSTOP = false, //eröffnet BUYSTOP-Order
extern bool SELLSTOP = false, //eröffnet SELLSTOP-Auftrag
extern double Lot = 0.1; // Auftragsvolumen
extern int slippage = 3; //maximal zulässige Preisabweichung für Market Orders
//--------------------------------------------------------------------
doppelt SL,TP;
//--------------------------------------------------------------------
int start()
{
wenn (KAUFEN)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Kaufen");
}
wenn (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Verkaufen");
}
wenn (BUYSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Buy Stop");
}
wenn (SELLSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Verkaufsstopp");
}
zurück(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err;
while (true)
{ error=true;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),Slippage,SL,TP, "BUY",Magic,0,Blue);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,SL,TP, "SELL",Magic,0,Red);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask,Digits),SL,TP, "BUYSTOP",Magic,0,Blue);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid,Digits),SL,TP, "SELLSTOP",Magic,0,Red);
if (error==-1) //Fehlschlag beim Kauf OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (error || err >10) return;
}
Rückkehr;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
switch ( err )
{
Fall 1: Rückkehr;
Fall 2: Alert("Keine Verbindung zum Handelsserver ",Symbol());return;
Fall 3: Alert("Fehler falsche Parameter ",Symbol());return;
Fall 130: Alert("Fehler beim Schließen von Ticketstops ",Symbol());return;
Fall 134: Alert("Nicht genug Geld ",Symbol());return;
Fall 146: Alert("Error Trade Subsystem is busy ",Symbol());return;
Fall 129: Alert("Fehler Falscher Preis ",Symbol());return;
Fall 131: Alert("Fehler Falsches Volumen ",Symbol());return;
case 4200:Alert("Fehler Objekt existiert bereits ",Symbol());return;
default: Alert("Fehler ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------

Vielen Dank im Voraus.

 
nemo811:

können Sie den Operator mit einem ";" statt mit einem "," abschließen?

 
FreeLance:

können Sie den Operator mit einem ";" statt mit einem "," abschließen?


Danke, ich lerne gerade noch dazu :))) Danke.
 
nemo811:

Danke, ich lerne gerade noch dazu :))) Danke.

Danke! Ich bin auch so... ;)
 
FreeLance:

Danke! Ich bin auch so... ;)

:)))) Eine noch dringendere Frage. Dieses Skript eröffnet Market Orders, platziert aber keine Pending Orders. Ich habe es wieder vermasselt. Können Sie mir bitte sagen, was los ist?
 
nemo811:

:)))) Eine noch dringendere Frage. Dieses Skript eröffnet Market Orders, platziert aber keine Pending Orders. Ich habe es wieder vermasselt. Können Sie mir sagen, was los ist?

Was ist die Handelsidee dahinter?
 
Ich habe einen EA, der manuell gesetzte Aufträge ignoriert. Das Skript, das ich zu ändern versuche, dient dazu, eine "manuelle" Bestellung in eine Bestellung mit einem magischen Parameter zu verwandeln. Das ist die Idee).
 
nemo811:
Ich habe einen EA, der "manuell" eingestellte offene Aufträge ignoriert. Das Skript, das ich zu ändern versuche, dient dazu, eine "manuelle" Bestellung in eine Bestellung mit einem magischen Parameter zu verwandeln. Das ist die Idee).


Gute Nacht!

Ich konnte es nicht herausfinden - also habe ich es aufgeschoben.

Aber auch Sie - nehmen Sie sich die Zeit und rechnen Sie nach!

Die Sprache und die Objekte der Manipulation sind einfach...

Die Ausführung ist manchmal lahm?

Es gibt also Nachlässigkeiten auf beiden Seiten.

;)

 

Der obige Code wurde korrigiert. Die Anhänger werden nicht gefasst. Bitte helfen Sie mir, den Fehler zu finden.

#property copyright "Copyright © 2010, Khlystov Vladimir"
#property link "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0; //Level von SL, wenn 0, wird SL nicht ausgestellt
extern int int takeprofit = 0; //t TP level, wenn 0, wird TP nicht ausgestellt
extern int int Magic = 123456; //Nummer einer Bestellung
extern bool BUY = false; //Kaufauftrag eröffnen
extern bool SELL = false; //Verkaufsauftrag eröffnen
extern bool BUYSTOP = false; //Eröffnen der BUYSTOP-Order
extern bool SELLSTOP = false; //SELLSTOP-Auftrag eröffnen
extern double Lot = 0.1; // Auftragsvolumen
extern int slippage = 3; //maximal zulässige Preisabweichung für Market Orders
extern int DistanceSet = 20; //Marktentfernung
//--------------------------------------------------------------------
doppelt SL,TP;
//--------------------------------------------------------------------
int start()
{
wenn (KAUFEN)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Kaufen");
}
wenn (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Verkaufen");
}
wenn (BUYSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Buy Stop");
}
wenn (SELLSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); sonst SL=0;
OPENORDER ("Verkaufsstopp");
}
zurück(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err;
while (true)
{ error=true;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),Slippage,SL,TP,"",Magic,0);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,SL,TP,",Magic,0);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),Slippage,SL,TP,"",Magic,0);
if (error==-1) //Fehlschlag beim Kauf OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (error || err >10) return;
}
Rückkehr;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
switch ( err )
{
Fall 1: Rückkehr;
Fall 2: Alert("Keine Verbindung zum Handelsserver ",Symbol());return;
Fall 3: Alert("Fehler falsche Parameter ",Symbol());return;
Fall 130: Alert("Fehler beim Schließen von Ticketstops ",Symbol());return;
Fall 134: Alert("Nicht genug Geld ",Symbol());return;
Fall 146: Alert("Error Trade Subsystem is busy ",Symbol());return;
Fall 129: Alert("Fehler Falscher Preis ",Symbol());return;
Fall 131: Alert("Fehler Falsches Volumen ",Symbol());return;
case 4200:Alert("Fehler Objekt existiert bereits ",Symbol());return;
default: Alert("Fehler ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------

Danke.

 
Dimka-novitsek:


Nein, es ist genau das Gegenteil von dem, was du geschrieben hast. Natürlich, danke für deine Aufmerksamkeit. Ich habe viel nachgedacht, habe es so und so herausgefunden, und du liegst falsch.

Ich sehe, dass das Problem nicht bei den Achsen und Bits liegt, und ich habe es noch nicht gelöst.

Das ist eine sehr seltsame Behauptung Ihrerseits. Ein Apfel wird nicht durch die Kraft deiner Gedanken nach oben fliegen, aber er wird dir auf den Kopf fallen...

So ist es, und nicht anders.

Oder leben Sie in einem bestimmten Land, in dem alles genau andersherum ist: Gewinn - Wert mit einem Minus? Denken Sie darüber nach: Kaufen Sie bei 1,0100, verkaufen Sie bei 1,0200 (nehmen Sie auf diesem Niveau, d.h. höher als der Kaufkurs). Wir haben einen Gewinn von 100 Punkten. Es gibt keinen anderen Weg. Wenn Sie versuchen, den Take auf das Niveau von 1,0000 zu setzen, erhalten Sie den Fehler 130 - falsche Stopps. Die Kaufoption (OP_BUY) kann nicht niedriger als der Eröffnungskurs sein. Der Stop-Loss hingegen sollte unter dem Eröffnungskurs der Kaufposition liegen. Beim Verkauf ist es umgekehrt - Take ist niedriger als der Eröffnungskurs, Stop ist höher.

Sieht so aus, als müssten Sie nicht nur Mathe lernen, sondern auch Mathe der ersten Klasse... Nichts für ungut.