[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 149

 

Si prega di consigliare un principiante, AccountBalance() - mostra la quantità di fondi nel saldo, ma ho bisogno di calcolare il mio saldo calcolato (calc_balance),

Questo bilancio è semplice, ma non posso ancora scriverlo, c'è un totale di ordini aperti e in sospeso (Orderstotal), per esempio 3 ordini, il rischio massimo per una posizione aperta è del 2%,

per aprire un altro trade ho bisogno di calcolare il rischio massimo (2%) del saldo calcolato, cioè la logica della formula più o meno sarebbe: calc_balance=AccountBalance()-2%-2%-2%,

Cioè, una sottrazione coerente - ma come scriverlo in codice non è ancora riuscito, spero per il vostro aiuto.

Grazie in anticipo!

 
Potete dirmi come i fondi (AccountEquity() ) e il collaterale (AccountMargin() ) sono separati per le posizioni di acquisto e di vendita?
 
T-G:
Potete dirmi come i fondi (AccountEquity() ) e il collaterale (AccountMargin() ) sono separati per le posizioni di acquisto e di vendita?
AccountEquity() è possibile solo per il tuo conto e AccountMargin() con le tue condizioni vedi le "Funzioni utili" di Kim!
 
Signori, qualcuno può consigliare un indicatore o un Expert Advisor, che esponga i livelli di supporto e resistenza su D1, senza lag preferibilmente)))
 
Top2n:
Signori, qualcuno può consigliare un indicatore o Expert Advisor, che esponga livelli di supporto e resistenza su D1, senza lag preferibilmente)))
Ricerca per: DailyPivotPoints
 

Buon pomeriggio a tutti, ho un problema e non riesco a capire cosa sia.


Ci sono due funzioni date. Se chiamo 1, allora non funziona nulla. Nel secondo caso, tutto funziona. Si prega di consigliare qual è l'errore?

Grazie in anticipo!

int OrderBuy(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   for (c = 0; c < NumberOfTries; c++) 
     {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_BUY, pLots, Ask, 0, Ask-0.0005, Ask+0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      return(ticket);

}


int OrderSell(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   
   for (c = 0; c < NumberOfTries; c++) 
   {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_SELL, pLots, Bid, 0, Bid+0.0005, Bid-0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
    }
    return(ticket);

}





//вызовы функций

ticket = OrderBuy(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");//здесь выдает -1
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());//здесь выдает "0";
                  return (0);
               } 




ticket = OrderSell(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());
                  return (0);
               } 
 
Se vuoi rimanere nei calcoli del terminale, il modo più semplice è sottrarre da quello che hai quello che rimane se apri un ordine appropriato:
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();
 
arabon:

Buon pomeriggio a tutti, ho un problema e non riesco a capire cosa sia.


Ci sono due funzioni date. Se chiamo 1, allora non funziona nulla. Nel secondo caso, tutto funziona. Si prega di consigliare qual è l'errore?

Grazie in anticipo!


Funzione GetLastError() che in OrderSell e OrderBuy in loop, azzera il valore dell'errore (vedere la guida su GetLastError ATTENZIONE), quindi

Print("Error: ", GetLastError());

Provate a stamparlo direttamente nel ciclo, allora vedrete dove l'ordine non si apre a causa di un errore.

 

Ho fatto un semplice indicatore che "capovolge" lo strumento. A volte, per la percezione è più facile vedere una coppia al contrario, e l'occhio viene "slavata" guardando la stessa immagine. Non ho mai letto da file (non ho mai nemmeno provato a lavorare con i file), posso visualizzare un grafico completo, qualcuno ha qualche idea.


File:
converter.mq4  2 kb
 

Non l'ho ancora trovato né cercando né tra le funzioni di Kim.

Come calcolare correttamente il margine per gli ordini aperti separatamente?

Lo facevo in questo modo:

в цикле
if (OrderType() == OP_BUY ) {  
   MarginBuy += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo(Symbol(), MODE_LOTSIZE);
}
         
if (OrderType() == OP_SELL ) {  
   MarginSell += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo(Symbol(), MODE_LOTSIZE);
}

Ho ottenuto un valore diverso da quello che mostra il terminale

Se vuoi inserirti nei calcoli del terminale, il modo più semplice è sottrarre da quello che hai quello che rimane se apri l'ordine corrispondente:
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();


Non si può semplicemente sottrarre, serve un calcolo separato per ogni direzione.