[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 549

 
Equilibrium:

Grazie mille)), la chiusura dell'ordine funziona, nessun errore, ma i criteri non funzionano di nuovo come previsto((, codice e screenshot allegati, aiuto per favore...
if (M_2 < S_2 && M_1>=S_1) 
      { 
       if (Total>0)
         {
          Close_Order (Lts,Tip);
         } 
       if (Total==0 тут критерий не сработает, так как переменная Total еще равна предыдущему значению, т.е. 1 и ордер открываться не будет
				 нужно использовать OrdersTotal() или перерассчитывать ее

       
         {                                          
          Open_Order_B (Lts);     
         }                                      
      }
   if (M_2 > S_2 && M_1<=S_1 ) 
      { 
       if (Total>0)
          {
           Close_Order (Lts,Tip); 
          }
       if (Total==0)         то же самое
          {                                          
           Open_Order_S (Lts);                                               
          }


A colpo d'occhio, quello che vedo nella funzione di chiusura degli ordini, è necessario selezionare l'ordine in base al bigliettoOrderSelect(Ticket, SELECT_BY_TICKET), il numero di lotti non indica la variabile Lts, perché viene ricalcolata ogni volta, ma utilizzare OrderLots() E un'altra cosa, si continua a lavorare sulla barra 0, rispettivamente, i criteri su una barra possono scomparire, i vostri ordini possono non aprirsi dove vorreste. Sostituire la barra 0 con 1 e 1 con 2 nei parametri dell'indicatore


 
borilunad:

Chi è obbligato a farne 5.000? Inizia con 100, metti alla prova te stesso, il tuo broker e poi decidi con fiducia! Il denaro è tuo!

Sto andando bene con una piccola depo per mezzo anno! Tutto è giusto :)
 
Beowulf:

Il piccolo deposito va bene da sei mesi ormai! Tutto è giusto come dovrebbe essere :)
Se tutto va bene, allora butta 2.000 dollari e lavora per altri sei mesi. E poi vedrete i risultati.
 
Tutti i computer hanno META TRADER connesso all'account, ma solo il mio non funziona :-( forse qualcuno può dirmi cosa si può fare? forse qualcosa da installare in aggiunta. non voglio reinstallare vin... Ho anche disinstallato il firewall, pensavo fosse il problema, ho reinstallato il programma 20 volte... MarketTrader funziona senza problemi, vorrei lavorare con Metatrader!
 
kolospav:
Tutti i computer hanno META TRADER connesso all'account, ma solo il mio non funziona :-( forse qualcuno può dirmi cosa si può fare? forse qualcosa da installare in aggiunta. non voglio reinstallare Windows... Ho anche disinstallato il firewall, pensavo fosse il problema, ho reinstallato il programma 20 volte... Non ho avuto problemi con MarketTrader, vorrei eseguire Metatrader!
Dove si trova questo computer? Per esempio, a casa MT4 si connette bene al server, ma al lavoro no.
 

Buon pomeriggio! Non so nemmeno come scriverlo. È la mia funzione che ho dimenticato. Sì, anche nella versione 5 Qualcuno potrebbe chiarirlo? Come implementarlo a quattro?

double GetLot(  double Riskk,  ENUM_ORDER_TYPE  action ,  string  symbol ,   double  price ,  double   Lott  ){ 

                     double  volume=1,margin=1; 

                       if(use_percent_of_deposit) return  (Lot) ; MqlTick last_tick;SymbolInfoTick(Symbol(),last_tick);

                                                                                   switch(action)

     {

      case ORDER_TYPE_BUY: price=last_tick.ask ;

      case ORDER_TYPE_SELL: price=last_tick.bid ;

      case ORDER_TYPE_BUY_LIMIT: price=price;

      case ORDER_TYPE_SELL_LIMIT:  price=price;

      case ORDER_TYPE_BUY_STOP:  price=price;

      case ORDER_TYPE_SELL_STOP:  price=price;

      case ORDER_TYPE_BUY_STOP_LIMIT:  price=price;

      case ORDER_TYPE_SELL_STOP_LIMIT:  price=price;}

                     OrderCalcMargin(

         action,           // тип ордера

                  symbol,           // имя символа

                  volume,           // объем

                  price,            // цена открытия

                 margin            // переменная для получения значения маржи

                   ); 

         

         double  Koeffitsyenta=AccountInfoDouble(ACCOUNT_BALANCE)/ margin ;

         Lott= (Koeffitsyenta*Riskk)/100;

         double Shag=1/SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); 

          Lott= Lott*Shag; Print( "Lot*Shag  " ,  Lot   );

         Lott=NormalizeDouble(Lot,0); 

          Lott= Lott/Shag;

         double MAX=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);

           double MIN=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);

          if (Lot>MAX) Lot=MAX;if (Lot<MIN) Lot=MIN;

          return(Lot);

                 

                   }
 

Si prega di consigliare come calcolare il valore dell'indicatore personalizzato nel codice, in qualche modo non funziona

double osma1=iCustom(NULL, 0, "OsMA",12,26,9,0,1);

non riesce a capire cosa c'è che non va

 
Mostrare in codice ciò che si sta facendo?
 
kwadrad:

Si prega di consigliare come calcolare il valore dell'indicatore personalizzato nel codice, in qualche modo non funziona

double osma1=iCustom(NULL, 0, "OsMA",12,26,9,0,1);

non riesce a capire cosa c'è che non va


Non ci sono abbastanza informazioni nella domanda. Rileggerlo. E controlla tutto.
 
Roman.:

Non ci sono abbastanza informazioni nella domanda. Per favore, rileggetelo. Controllare tutto.


È necessario calcolare il valore dell'indicatore personalizzato "OsMA".

Scrivere in codice

double osma1=iCustom(NULL, 0,"OsMA",12,26,9,0,1);

Dovrebbe restituire il valore dell'OsMA della candela precedente

ma in realtà restituisce dei risultati sbagliati.

Il buffer sembra essere "0", il codice indicatore ha tre parametri, scritti nello stesso ordine del codice indicatore, ma il risultato è sbagliato.

Domanda: potresti dirmi dov'è l'errore?