Sari la conținut

Probleme mql4.


Mangusta

Postări Recomandate

Am inceput sa fac un expert simplu pentru a invata mql4.

Am facut un expert care cumpara pe baza de iMA() [medii mobile].Daca linia trece peste alta linie intra pe pozitie in buy.

Am compilat EA-ul si nu are errors sau warnings.Il testez cu strategy tester si nu imi deschide nici un ordin.Eroarea este :

OrderSend error 138

invalid double number as parameter 6 for OrderSend function

Functia de order send arata asa :

extern double StopLoss =35;

extern double TakeProfit =75;

....

if (Curs>MA1){

tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask-StopLoss*Point ,Ask+TakeProfit*Point,"Tunel",0,0,Red);

if (Curs<MA1) {

OrderClose(tiket,Lots,Ask,Red);

return(0);

}

}

In codul de mai sus am vrut sa spun cand "Curs" trece deasupa lui "MA1" deschide un ordin buy iar cand "Curs" ajunge sub "MA1" inchide ordinul deschis precedent.

 

Nu imi dau seama unde poate fi greseala.

 

Alta intrebare:

Care este diferenta intre a declara indicatorii in functia init() si in functia start ()?

Link spre comentariu
Distribuie pe alte site-uri

  • Răspunsuri 6
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask-StopLoss*Point ,Ask+TakeProfit*Point,"Tunel",0,0,Red);

ai o mancat ceva cuvinte din propozitie:double price, int slippage,

tiket=OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

 

deci corect ar fi:

 

tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point ,Ask+TakeProfit*Point,"Tunel",0,0,Red);

Link spre comentariu
Distribuie pe alte site-uri

  • 5 ani mai târziu...

De pe google adunate si iarasi la google date :

Versiunea 4 Build 509 a metatrader-ului verifica (in faza de compilare) numele variabilelor, iar intr-un cod sursa decompilat gaseste o utilizare abundenta a caracterului '_' la numele variabilelor.

 

PS. De preferat este utilizarea codurilor sursa originale, intelegerea in/corectitudinii algoritmilor utilizati, si in cele din urma scrierea unor solutii personalizate. MQL4 il poate invata orice elev de clasa a 8-a, iar in 9 luni de zile acesta poate deveni senior in ale MQL4.

Link spre comentariu
Distribuie pe alte site-uri

De pe google adunate si iarasi la google date :

Versiunea 4 Build 509 a metatrader-ului verifica (in faza de compilare) numele variabilelor, iar intr-un cod sursa decompilat gaseste o utilizare abundenta a caracterului '_' la numele variabilelor.

 

PS. De preferat este utilizarea codurilor sursa originale, intelegerea in/corectitudinii algoritmilor utilizati, si in cele din urma scrierea unor solutii personalizate. MQL4 il poate invata orice elev de clasa a 8-a, iar in 9 luni de zile acesta poate deveni senior in ale MQL4.

 

 

 Multumesc pentru informatie .Cautasem si eu pe google o zi,dar nu gasisem nimic.

Link spre comentariu
Distribuie pe alte site-uri

  • 1 lună mai târziu...

Am intalnit intr-un Expert  o  functie , si nu stiu la ce se refera ; imi poate spune cineva ?

 

 

 

functia este aceasta :

 

 

 

//-----------------------------------------------------------------------------------------------
void SemaphoreTake(string SEM)
{
   if(GlobalVariableCheck(SEM) == false)
      GlobalVariableSet(SEM, 0);
 
   while(1==1)
   {
      if(GlobalVariableSetOnCondition(SEM, 1.0, 0.0))         
      {
         critical = 1;
         Print("SEMAPHORE \"", SEM, "\" TAKEN. CURRENT VALUE: ", GlobalVariableGet(SEM));
         break;     
      }
      else
      {
         Print("ATTEMPT TO CAPTURE SEMAPHORE \"", SEM, "\" FAILED. SEMAPHORE BUSY. WAITING 0.1 SEC. CURRENT VALUE: ", GlobalVariableGet(SEM));
         Sleep(100);
      }
   }
}

void SemaphoreReturn(string SEM)
{
   GlobalVariableSet(SEM, 0.0);
   Print("SEMAPHORE \"", SEM, "\" RETURNED. CURRENT VALUE: ", GlobalVariableGet(SEM));
   critical = 0;
}

Link spre comentariu
Distribuie pe alte site-uri

Semaforul e o primitiva de sincronizare pt probleme de concurenta. De obicei e folosit pt a share-ui o resursa intre thread-uri.

 

Dar nu inteleg ce cauta asa ceva intr-un script MT4. Din cate stiu, script-urile ruleaza pe un singur thread acolo.

 

https://en.wikipedia.org/wiki/Semaphore_%28programming%29

Link spre comentariu
Distribuie pe alte site-uri

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.

Vizitator
Răspunde la acest subiect...

×   Alipit ca text avansat.   Alipește ca text simplu

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost resetat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.

  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.

×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.