[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 130

 

Salve. Potresti per favore aiutarmi? Il codice dovrebbe visualizzare una linea al livello globale TakeProfit . Non riesco a trovare l'errore.

Grazie in anticipo.

void Drawline_Per_B (int Drawline_Per, double Balans, double Free, double Global_TakeProfit)  {
    Balans=AccountBalance();//Баланс счёта
    Free=AccountEquity();//Текущее количество денег в статье "Средства"
    double q;
    double SchBuyLs=SchBuyLs_b(); сумма лот для баев
    double SchSellLs=SchSellLs_b(); сумма лот для сейлов  
    double ad.QuotePoint   = MarketInfo ( Symbol () , MODE_POINT     );
    double ad.QuoteTick    = MarketInfo ( Symbol () , MODE_TICKSIZE  );
    double ad.NominalTick  = MarketInfo ( Symbol () , MODE_TICKVALUE );
    double ad.NominalPoint = ad.NominalTick  * ad.QuotePoint / ad.QuoteTick ; // Цена 1 пункта для стандартного лота в валюте депозита
    q =  NormalizeDouble(Bid + (Balans-Free+Balans/100*Global_TakeProfit)/ad.NominalPoint*(SchBuyLs-SchSellLs)*Point,Digits);
    Drawline_Per("%_LINE");
    ObjectSet( "%_LINE", OBJPROP_PRICE1, q);
  }
 
Non so cosa stai contando, ma il numero di punti è un numero intero. Fallo diventare un tipo int e non avrai bisogno di normalizzazione.
q =  (Balans-Free+Balans/100*Global_TakeProfit)/PP*(SchBuyLs-SchSellLs);  //число пунктов до наступления условия  Global_TakeProfit
 

Grazie per il consiglio.

Trovati i difetti, tutto funziona.

 

Si prega di aiutare con i frattali

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

Perché non vedo
maxF > Bid o minF > Bid in esecuzione?

Se <, sarà eseguito.

Senza NormalizeDouble, la stessa cosa. C'è qualcosa che non capisco dei frattali?

 
lia:

Si prega di aiutare con i frattali.

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

Perché non posso vedere l'esecuzione di
maxF > Offerta o minF > Offerta?

Se <, viene eseguito.

Senza NormalizeDouble è lo stesso. Non capisco qualcosa con i frattali?


Vedi questa e la prossima pagina - visualizza allo stesso modo le tue condizioni.
 

Potresti suggerire una funzione per un EA in MT4 che restituisca il profitto dell'ultimo ordine chiuso, o se l'ultimo ordine ha chiuso in profitto o in perdita?

PS Non ho trovato una tale funzione in Kim.

 
Sancho77:

Potete suggerire una funzione che restituisca il profitto dell'ultimo ordine chiuso, o se l'ultimo ordine ha chiuso in profitto o in perdita?

PS Kim non ha trovato una tale funzione.

Igor Kim ha tali funzioni. Ma le sue funzioni sono un po' esagerate per la versatilità. Posso rapidamente creare una tale funzione per voi qui.
Domanda: In cosa consiste il profitto? In punti o nella valuta di deposito?
 
artmedia70:
Igor Kim ha queste caratteristiche. Tuttavia, le sue funzioni sono un po' eccessive per la versatilità. Posso rapidamente creare una tale funzione per voi qui.
Domanda: In cosa consiste il profitto? In punti o nella valuta di deposito?
Ti sarei grato se me lo dicessi! Non importa se il profitto è in punti o in valuta, il fatto importante: un affare è stato chiuso in profitto o in perdita. Per quanto mi riguarda, non fa differenza se è in valuta o in pip.
 
Sancho77:
Vi sarei grato se poteste scriverlo! Non importa se il profitto è in punti o in valuta, l'importante è il fatto se l'affare è stato chiuso in profitto o in perdita. Secondo me, non fa alcuna differenza in valuta o in pip.
//+----------------------------------------------------------------------------+
bool LossLastPose(string sy, int op, int mn) {
   datetime t;
   int      i, j;
   for (i=0; i<OrdersHistoryTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
         if (OrderType()!=op)          continue;
         if (OrderSymbol()!=sy)        continue;
         if (OrderMagicNumber()!=mn)   continue;
         if (OrderCloseTime()>t) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) 
      if (OrderProfit()<0) return(true);
   return(false);
}
//+----------------------------------------------------------------------------+

Noi lo chiamiamo così:

Per controllare l'ultima posizione di acquisto chiusa sul simbolo corrente. La funzione restituirà true se in perdita e false se in profitto...

if (LossLastPose(Symbol(), OP_BUY, Magic)) {код, если последняя позиция закрылась с убытком}
else {Код, если последняя позиция закрылась с прибылью}

La variabile Magic è una magia dell'EA, è scritta nelle variabili globali dell'EA.

 
artmedia70:

Noi lo chiamiamo così:

Per controllare l'ultima posizione di acquisto chiusa sul simbolo corrente. La funzione restituirà true se in perdita e false se in profitto...

La variabile Magic è la magia dell'EA, scritta nelle variabili globali dell'EA.



Grazie mille!
Motivazione: