[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 533

 
001:

Ich kann die Logik des Compilers nicht verstehen. Ich habe eine Funktion. Ich deklariere eine externe Variable.

int start;

weiter den Funktionskörper

double B()
{

int i=0, k=AuftragshistorieGesamt();
for (i=k-1; i<=k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
if(OrderProfit()< 0) {start=1;}

}

}

}

}

Der Wert der Startvariablen muss gespeichert werden und bei Bedarf mit Null gleichgesetzt werden. Aber in diesem Fall, wenn OrderProfit()<0 , dann Start=1, und wenn OrderProfit()> 0 , dann automatisch Start=0.

keine

wenn OrderProfit()> 0, speichert die Variable denselben Wert

 
Tantrik:
Können Sie mir sagen, wo ich es finden kann? Es ist alles auf Englisch.
Wenn Sie MetaEditor nicht auf Russisch einstellen können, verwenden Sie den Link Dokumentation
 
ilunga:

keine

Wenn OrderProfit()> 0 ist, bleibt der Inhalt der Variablen


Hier ist die Funktion .

//+------------------------------------------------------------------+
double Balans()
{

int i=0, k=OrdersHistoryTotal();
for (i=k-1; i<=k; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if (OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" start= ",start);
if(lots<0.01) lots=0.01;
lots=NormalizeDouble(lots,2);
return(lots);
}
//+------------------------------------------------------------------+

Hier ist das Protokoll.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: open #1 sell 0.01 GBPUSD bei 2.03190 tp: 2.03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1: close #1 sell 0.01 GBPUSD at 2.03190 tp: 2.03100 at price 2.03210
16:01:36 2007.07.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: open #2 sell 0.01 GBPUSD bei 2.02860 tp: 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1: close #2 sell 0.01 GBPUSD at 2.02860 tp: 2.02770 at price 2.02890
16:01:36 2007.07.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: open #3 sell 0.01 GBPUSD bei 2.03640 tp: 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1: close #3 sell 0.01 GBPUSD at 2.03640 tp: 2.03550 at price 2.03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: open #4 sell 0.01 GBPUSD bei 2.04880 tp: 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1: close #4 sell 0.01 GBPUSD at 2.04880 tp: 2.04790 at price 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: open #5 sell 0.01 GBPUSD bei 2.05140 tp: 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1: close #5 sell 0.01 GBPUSD at 2.05140 tp: 2.05050 at price 2.05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: open #6 sell 0.01 GBPUSD at 2.04840 tp: 2.04750 ok
16:01:36 2007.07.19 17:33 Tester: Take Profit #6 bei 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: open #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1: close #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 at price 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start=1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: open #8 sell 0.01 GBPUSD at 2.06160 tp: 2.06070 ok
16:01:36 2007.07.25 02:12 Tester: Gewinnmitnahme #8 bei 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0

 
001:


Hier ist die Funktion .

//+------------------------------------------------------------------+
double Balans()
{

int i=0, k=AuftragshistorieGesamt();
for (i=k-1; i<=k; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" start= ",start);
if(Lose<0,01) Lose=0,01;
lots=NormalizeDouble(lots,2);
return(lots);
}
//+------------------------------------------------------------------+

Hier ist das Protokoll.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: open #1 sell 0.01 GBPUSD at 2.03190 tp: 2.03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1: close #1 sell 0.01 GBPUSD at 2.03190 tp: 2.03100 at price 2.03210
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 16:04 Bars_Trader GBPUSD,M1: open #2 sell 0.01 GBPUSD at 2.02860 tp: 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1: close #2 sell 0.01 GBPUSD at 2.02860 tp: 2.02770 at price 2.02890
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: open #3 sell 0.01 GBPUSD at 2.03640 tp: 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1: close #3 sell 0.01 GBPUSD at 2.03640 tp: 2.03550 at price 2.03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: open #4 sell 0.01 GBPUSD at 2.04880 tp: 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1: close #4 sell 0.01 GBPUSD at 2.04880 tp: 2.04790 at price 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: open #5 sell 0.01 GBPUSD at 2.05140 tp: 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1: close #5 sell 0.01 GBPUSD at 2.05140 tp: 2.05050 at price 2.05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: open #6 sell 0.01 GBPUSD at 2.04840 tp: 2.04750 ok
16:01:36 2007.07.19 17:33 Tester: Gewinnmitnahme #6 bei 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: open #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1: close #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 at price 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: open #8 sell 0.01 GBPUSD at 2.06160 tp: 2.06070 ok
16:01:36 2007.07.25 02:12 Tester: Gewinnmitnahme #8 bei 2,06070 (2,06040 / 2,06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0

Zeigen Sie den Code ausführlicher an. Im Moment können Sie zum Beispiel nicht sehen, wo diese Variable deklariert ist.

 
ilunga:

den Code ausführlicher darstellen. Im Moment können Sie zum Beispiel nicht sehen, wo diese Variable deklariert ist.


extern int TF;
extern int TP;
extern int BARS;
extern int BarrierMinute;
extern int Step=0;
//--------
extern double ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ;
extern double Decrease=2;
extern inttern Wait=2;
extern inttern Wiederholen Sie;
extern int int MA_Sell;
extern int int Applied_Price_Sell;
//extern int MAPeriod_1;
//extern int Calc=8;
extern double Lots=5;
//----
static int PrevTime=0;
Doppellose;
int wait,start,step,repeat;
datetime openTime=0;
double lot=0.1;
 
sergovan 26.01.2012 07:27 | gebannt | löschen

Hallo, können Sie mir sagen, wie man Aufträge OP_ BUYSTOP und OP_SELLSTOP in meinem EA für OP_SELLLIMIT und OP_BUYLIMIT zu ändern? Ich habe es versucht und meine BUYLIMIT Aufträge sind platziert, aber SELLLIMIT diejenigen nicht einmal denken, vielleicht bin ich etwas falsch machen?


Beigefügte Dateien:
Expertd10.mq4 (5,82 KB) löschen
 

Hallo Freunde, könnt ihr mir bitte bei diesem Problem helfen?

Ich schreibe einen Expert Advisor mit Software Stoploss, das Grundschema des Algorithmus ist wie folgt:


int start()
{double x, PreProfit, TekProfit;
for (x=0; x<1; x++) //Der Operator der For-Schleife sollte (theoretisch) 1 Mal ausgeführt werden
{PreviousProfit=(-20);}/// Weisen Sie (theoretisch) 1 Zeitwert zu!

TextProfit=OrderProfit();//Ermittelt den Gewinn der ausgewählten Order
if (PredPreviousProfit<TecProfit)//wenn der aktuelle Gewinn höher ist als der vorherige, dann...
{WeakProfit=TekProfit;}/// Weisen Sie der Variable PredCompetitive einen neuen Wert zu!
//dann sollte die Variable PredCompanyProfit den höchsten Gewinnwert aller Zeiten enthalten!
}


Der Haken an der Sache ist, dass der Wert der Variablen "x" bei einem neuen Tick auf Null zurückgesetzt wird und der Wert (-20) bei jedem neuen Tick der Variablen "PredPreCompetition" zugewiesen wird! Damit geht der gesamte Sinn des Algorithmus verloren! Die Variable "PrevPreprofit" wurde so konzipiert, dass sie den maximalen Wert des Auftragsgewinns konstant hält, bis sie gezwungen ist, diesen Wert bei der Schließung des Auftrags zu "entsorgen".

Worin liegt der Fehler? Vielleicht gibt es andere Lösungen für dieses Problem? Ich bin Ihnen im Voraus sehr dankbar!

 
bis:

Der Haken ist, dass der Wert der Variable "x" bei einem neuen Tick auf Null zurückgesetzt wird und die Zuweisung des Wertes (-20) an die Variable "PredPreprofit" bei jedem neuen Tick durchgeführt wird! Damit geht der gesamte Sinn des Algorithmus verloren! Die "PrevProfit"-Variable ist so konzipiert, dass sie den maximalen Gewinnwert des Auftrags dauerhaft beibehält, bis dieser Wert beim Schließen des Auftrags zwangsweise "zurückgesetzt" wird.

Worin liegt der Fehler? Vielleicht gibt es andere Lösungen für dieses Problem? Vielen Dank im Voraus!

Siehe https://docs.mql4.com/ru/basis/variables/static
 
FAQ:
sergovan 26.01.2012 07:27 | gebannt | löschen

Hallo, können Sie mir sagen, wie man Aufträge OP_ BUYSTOP und OP_SELLSTOP in meinem EA für OP_SELLLIMIT und OP_BUYLIMIT ändern? Ich habe versucht, Aufträge BUYLIMIT ändern, aber SELLLIMIT nicht einmal denken, vielleicht bin ich etwas falsch machen?


Expertd10.mq4 (5.82 KB) Löschen


Haben Sie Bid und Ask nicht vergessen, als Sie sie geändert haben?
 

Wer weiß, wie man einen Standardindikator im Strategietester sichtbar macht?