[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 412

 
7777877:
D.h. der Fensterdeskriptor ist einfach die ORDER-Nummer des Fensters, beginnend mit 0 (Hauptfenster)?

Nein
 

Guten Tag alle! beim Schreiben eines waggle Experten, wurde für genauere Ausstiegspunkte suchen und stieß auf eine Kreuzung zwischen RSI (8) und ADX(25). visuell alles in Ordnung ist, wenn der Handel manuell auf der Demo.

Frage, wie die Schnittbedingung des RSI (8) mit ADX(25) DI + zum Beispiel zu schreiben, wenn, RSI (8) hat eine Grenze von 0 bis 100, und ADX(25) hat keine Grenze. das heißt, wenn Sie werfen ADX auf dem Diagramm ohne Grenze und dann werfen RSI auf sie, dann RSI Skalen von max und min ADX. wenn ADX angeben Grenze von 0 bis 100, dann gibt es sehr wenige klare Schnittpunkte ADX mit RSI.

Ist es möglich, den Wert des RSI zu definieren, wenn er durch den ADX skaliert wird?

 
PapaYozh:

Nein
????... wenn es Ihnen nichts ausmacht, geben Sie bitte eine ausführlichere Antwort... und es wäre toll, wenn Sie zumindest ein einfaches Skript als Beispiel geben könnten, das deutlich macht, wofür die WindowHandle-Funktion gedacht ist
 
drimara: D.h. wenn Sie den ADX auf den Chart legen, ohne die Grenzen festzulegen, und dann den RSI darauf legen, dann skaliert der RSI nach dem maximalen und minimalen ADX. Wenn der ADX Grenzen von 0 bis 100 festlegt, dann wird es nur sehr wenige offensichtliche Überkreuzungen zwischen ADX und RSI geben.

Ist es möglich, den Wert des RSI zu definieren, wenn er durch den ADX skaliert wird?

Und wenn Sie ihn dann nach links und rechts bewegen, beginnen die Kreuzungspunkte zu wandern
 
Gibt es eine Begrenzung für die Anzahl der Parameter in einem nicht standardisierten Indikator, wenn er über iCustom angeschlossen ist?

Ich habe einen Indikator mit etwa 8 Parametern, ich habe alle Parameter korrekt eingegeben, ich habe es mehrmals überprüft, aber bei der Kompilierung erscheint immer noch der Fehler ')'. - falsche Parameteranzahl D:\InstaTrader\experts\Expert_2.mq4 (11, 280)
 
sss2019:
Gibt es eine Begrenzung für die Anzahl der Parameter in einem nicht standardisierten Indikator, wenn er über iCustom angeschlossen ist?

Ich habe einen Indikator mit etwa 8 Parametern, ich habe alle Parameter korrekt eingegeben, ich habe es mehrmals überprüft, aber bei der Kompilierung erscheint immer noch der Fehler ')'. - falsche Parameteranzahl D:\InstaTrader\experts\Expert_2.mq4 (11, 280)
Code + Eingabeparameter im Indikator anzeigen
 
7777877:
????... wenn es Ihnen nichts ausmacht, geben Sie bitte eine ausführlichere Antwort... und es wäre toll, wenn Sie zumindest ein einfaches Skript als Beispiel geben könnten, das helfen würde zu verstehen, wozu die WindowHandle-Funktion dient


Bei Ihrem derzeitigen Wissensstand brauchen Sie das nicht unbedingt.

Wenn du den Wunsch hast, Programmierer zu werden, dann kaue die Wissenschaft mit Hilfe von Google. Abfrage "Fenster-Beschreibung site:mql4.com"

 
Ich bitte die Programmiergurus, mir zu meiner Frage zu sagen, ob es überhaupt realistisch ist, diesen Berater zu machen?
 
stater:
Ich bitte den Programmierguru, mir zu meiner Frage zu sagen, ob es überhaupt realistisch ist, diesen Berater zu machen?

Alles ist möglich, wenn man es will.

sehen die folgenden Dinge:

1) Kontrolle der Balkenöffnung

2) BestellungSenden

Versuch und Versuch, und die Gurus werden dich korrigieren

 

Hier ist ein EA, der die Order beim SCHLIESSEN der Kerze öffnet, nicht nur bei einem Kreuz.

Wer im Voraus helfen wird, bedankt sich.

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

//| RSI_MA.mq4 |

//| Copyright © 2008, AEliseev k800elik@gmail.com |

//| http://www.metaquotes.net |

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

#property copyright "Copyright © 2008, Andrey E. k800elik@gmail.com"

#property link "http://www.metaquotes.net"


//---- Eingabeparameter

extern CCI_Per=14;

extern MA_Per=20;

extern CCI_close_Per=14;

extern double TakeProfit=500;

extern double StopLoss=150;

extern double Lots=0.01;

extern inttern Deposit=1000;

extern bool MM=false;

extern inttern _MagicNumber=131313;

extern int_Sleep=5000;


int LotA=1, Err=0;

int j=0; var2,var1;

int counter=0;

int-Ticket;

bool var3;


bool order=false;


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

//| Experten-Initialisierungsfunktion |

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

int init()

{

Comment("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com");

zurück(0);

}

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

//| Experten-Deinitialisierungsfunktion |

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

int deinit()

{

/* int i, a1, a2;

//----

wenn (Auftragssumme()>0)

{

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

{

OrderSelect(i,SELECT_BY_POS);

if (BestellMagischeZahl()==131313)

{

a1=OrderClose(LotA*Lots,Ask,5,Red);

//a2=OrderClose(var1,LotA*Lots,Ask,5,Red);

}

}

} */

zurück(0);

}

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

//| Expertenstartfunktion |

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

int start()

{

//----

if (isNewBar()) EveryBar();

EveryTick();

//----

zurück(0);

}

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


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

//| Prüfung auf neuen Takt |

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

bool isNewBar()

{ static datetime TimeBar=0;

bool flag=false;

if(TimeBar!=Time[0])

{

TimeBar=Time[0];

flag=true;

}

return(flag);

}

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

//| Aktion ausführen, wenn neuer Balken erscheint |

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

void JederBalken()

{

// Print("Eine NEUE BAR ist eingetroffen!)

double MA[100], CCI[100], CCIclose[100], StandDevi[100];

int i,limit=ArraySize(CCI);

doppelt SL, TP;

Sleep(_Sleep);

SL = NormalizeDouble(Ask - StopLoss*Point, Digits);

TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);

for(i=0; i<limit; i++)

{

CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);

CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);

MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);

}

// Prüfen, ob genug Geld vorhanden ist, um einen neuen Auftrag zu eröffnen

if(KontoFreieMarge()<(1000*Lose))

{

Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin());

zurück(0);

}

//=================================================================================

int _GetLastError = 0, _OrdersTotal = OrdersTotal();

//---- geht alle offenen Stellen durch

for ( int z = _OrdersTotal - 1; z >= 0; z -- )

{

//---- wenn ein Fehler bei der Auswahl der Position auftritt, weiter zur nächsten Position

if ( !OrderSelect( z, SELECT_BY_POS ) )

{

_GetLastError = GetLastError();

Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Fehler #", _GetLastError);

weiter;

}

// wenn eine Position nicht für das aktuelle Symbol geöffnet ist, wird sie übersprungen

if ( OrderSymbol() != Symbol() ) continue;

// wenn die MagicNumber nicht gleich _MagicNumber ist, übergehen

// diese Position

if ( OrderMagicNumber() != _MagicNumber ) continue;

//---- wenn eine BAY-Position offen ist,

wenn ( OrderType() == OP_BUY )

{

//---- wenn der CCI die Linie 190 nach unten kreuzt

wenn (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])

{

//---- Position schließen

if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )

{

_GetLastError = GetLastError();

Print("OrderClose error # , _GetLastError );

Err=1;

zurück(-1);

}

}

// wenn sich das Signal nicht geändert hat, beenden - es ist zu früh zum Öffnen

//neue Position

sonst

{ return(0); }

}

//---- wenn eine Verkaufsposition eröffnet wird,

wenn ( OrderType() == OP_SELL )

{

//---- wenn der CCI die Linie -190 nach oben überschreitet,

wenn (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[Limit-MA_Per-1]) && (CCI[2]<=MA[Limit-MA_Per-2]))

{

//---- Position schließen

if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ) )

{

_GetLastError = GetLastError();

Print("OrderClose error # ", _GetLastError );

Err=2;

zurück(-1);

}

}

// wenn sich das Signal nicht geändert hat, beenden - es ist zu früh zum Öffnen

// neue Position

sonst return(0);

}

}

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

//| Wenn die Ausführung diesen Punkt erreicht hat, gibt es keine offene Position.

//| Prüfen Sie, ob es möglich ist, eine Position zu eröffnen.

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

Sleep(_Sleep);

//---- wenn der CCI den MACD von unten nach oben gekreuzt hat,

SL = NormalizeDouble(Bid - StopLoss*Point, Digits);

TP = NormalizeDouble(Bid + TakeProfit*Point, Digits);

wenn ((CCI[1]>MA[Grenze-MA_Per-1]) && (CCI[2]<MA[Grenze-MA_Per-2])

{

//---- offene BAY-Stelle

if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )

{

_GetLastError = GetLastError();

Print( "OrderSend OP_BUY error # ", _GetLastError );

Err=3;

zurück(-1);

}

zurück(0);

}

//---- wenn der CCI den MACD von oben nach unten gekreuzt hat,

SL = NormalizeDouble(Ask + StopLoss*Point, Digits);

TP = NormalizeDouble(Ask - TakeProfit*Point, Digits);

wenn ((CCI[1]<MA[Grenze-MA_Per-1]) && (CCI[2]>MA[Grenze-MA_Per-2])

{

//---- eine Verkaufsposition eröffnen

if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )

{

_GetLastError = GetLastError();

Print("OrderSend OP_SELL error # ", _GetLastError );

Err=4;

zurück(-1);

}

zurück(0);

}

}

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

//| Berechnungen bei jeder Preisänderung durchführen |

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

void EveryTick()

{

int i;

wenn (MM==true)

{

wenn (Kontostand()>(2*Einzahlung)) LotA=2;

wenn (Kontostand()>(3*Einzahlung)) LotA=3;

wenn (Kontostand()>(4*Einzahlung)) LotA=4;

wenn (Kontostand()>(5*Einlage)) LotA=5;

wenn (Kontostand()>(6*Einzahlung)) LotA=6; if (Kontostand()>(6*Einlage); LotA=6;

wenn (Kontostand()>(7*Einzahlung)) LotA=7;

wenn (Kontostand()>(8*Einzahlung)) LotA=8;

wenn (Kontostand()>(9*Einzahlung)) LotA=9;

wenn (Kontostand()>(10*Einlage)) LotA=10;

wenn (Kontostand()>(11*Einzahlung)) LotA=11;

wenn (Kontostand()>(12*Einzahlung)) LotA=12;

wenn (Kontostand()>(13*Einzahlung)) LotA=13;

wenn (Kontostand()>(14*Einzahlung)) LotA=14;

wenn (Kontostand()>(15*Einzahlung)) LotA=15;

wenn (Kontostand()>(16*Einzahlung)) LotA=16;

wenn (Kontostand()>(17*Einzahlung)) LotA=17;

wenn (Kontostand()>(18*Einzahlung)) LotA=18;

wenn (Kontostand()>(19*Einzahlung)) LotA=19;

wenn (Kontostand()>(20*Einzahlung)) LotA=20;

}

int _GetLastError = 0, _OrdersTotal = OrdersTotal();

int z;

doppelt SL, TP;

double MA[100], CCI[100], CCIclose[100], StandDevi[100];

int limit=ArraySize(CCI);

for(i=0; i<limit; i++)

{

CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);

CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);

MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);

}

switch(Err)

{

Fall 1:

for ( z=_OrdersTotal - 1; z >= 0; z -- )

{

if ( !OrderSelect( z, SELECT_BY_POS ) )

{

_GetLastError = GetLastError();

Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Fehler #", _GetLastError);

weiter;

}

if ( OrderSymbol() != Symbol() ) continue;

if ( OrderMagicNumber() != _MagicNumber ) continue;

wenn ( OrderType() == OP_BUY )

{

wenn (((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])

{

if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )

{

_GetLastError = GetLastError();

Print("CASE OrderClose error # , _GetLastError );

Err=1;

zurück(-1);

}

sonst Err=0;

}

}

}

Pause;

//=============================================================================

Fall 2:

for ( z=_OrdersTotal - 1; z >= 0; z -- )

{

if ( !OrderSelect( z, SELECT_BY_POS ) )

{

_GetLastError = GetLastError();

Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Fehler #", _GetLastError);

weiter;

}

if ( OrderSymbol() != Symbol() ) continue;

if ( OrderMagicNumber() != _MagicNumber ) continue;

wenn ( OrderType() == OP_SELL )

{

wenn (((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2]))

{

if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) )

{

_GetLastError = GetLastError();

Print("CASE OrderClose error # ", _GetLastError );

Err=2;

zurück(-1);

}

sonst Err=0;

}

}

}

Pause;

//==============================================================================

Fall 3:

SL = NormalizeDouble(Bid - StopLoss*Point, Digits);

TP = NormalizeDouble(Bid + TakeProfit*Point, Digits);

if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )

{

_GetLastError = GetLastError();

Print( "CASE OrderSend OP_BUY error # ", _GetLastError );

Err=3;

zurück(-1);

}

sonst Err=0;

Pause;

//===================================================================================

Fall 4:

SL = NormalizeDouble(Ask + StopLoss*Point, Digits);

TP = NormalizeDouble(Ask - TakeProfit*Point, Digits);

if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )

{

_GetLastError = GetLastError();

Print("CASE OrderSend OP_SELL error # ", _GetLastError );

Err=4;

zurück(-1);

}

sonst Err=0;

Pause;

}

}

Grund der Beschwerde: