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

 
MarkTrade:

Mi scusi, mi spieghi qual è l'errore qui. Non riesco a capirlo.


for (i=0;i>5<==ошибка;i++)
 
MarkTrade:

Mi scusi, mi spieghi qual è l'errore qui. Non riesco a capirlo.

Rompiamo la stringa.

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

Lasciamo che i vari da zero a cinque. Dopo ogni iterazione il contatore aumenterà di uno. Le iterazioni saranno calcolate fino a quando i è inferiore a cinque. Cioè il ciclo funzionerà ed eseguirà cinque iterazioni: 0, 1, 2, 3, 4 - questi sono i valori del contatore del ciclo i. Quando i è uguale a cinque, il ciclo terminerà

Vediamo cosa avete:

for (i=0;i>5;i++)

Avete il contatore i inizializzato con zero, ma le iterazioni del ciclo devono essere eseguite finché i è maggiore di cinque. E non è inizialmente maggiore di cinque. Pertanto, il ciclo non inizia.

 
artmedia70:

Scomponiamo la stringa

Che i sia variato da zero a cinque. Dopo ogni iterazione il contatore aumenterà di uno. Le iterazioni saranno calcolate fino a quando i è inferiore a cinque. Cioè il ciclo funzionerà ed eseguirà cinque iterazioni: 0, 1, 2, 3, 4 - questi sono i valori del contatore del ciclo i. Quando i è uguale a cinque, il ciclo terminerà

Vediamo cosa avete:

Avete il contatore i inizializzato con zero, ma le iterazioni del ciclo devono essere eseguite finché i è maggiore di cinque. E non è inizialmente maggiore di cinque. Pertanto, il ciclo non inizia.



Oh, giusto! Grazie! Devo aver avuto un occhio nero.
 
K-o-t:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Signori programmatori, per favore consigliate come combinare un EA con un indicatore?

Per esempio, ho preso un semplice bot mo_bidir.mq4 che fa trading usando il suo proprio algoritmo e voglio che apra trade usando il suo stesso algoritmo ma dopo 3 segnali MA

Per esempio su segnale - Tre medie mobili:

FastEMA>MediumEMA>SlowEMA (tendenza up) - bot compra

FastEMA<MediumEMA<SlowEMA (tendenza giù) - bot vende

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod= 48;

Voglio che il mio Expert Advisor operi su timeframe 5 minuti e che l'indicatore dia segnali da timeframe giornaliero o 4 ore, e voglio essere in grado di cambiare timeframe nelle impostazioni del bot.

\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Mi scuso per la ripetizione, ma almeno ditemi in quale thread del forum applicare, o devo creare un nuovo thread?

Non so cosa fare.


Quello che volete fare si chiama filtraggio. Quindi fai una ricerca sulla parola "filtro", guarda un paio di EA con filtraggio e vedi se puoi fare quello che ti serve.
 
artmedia70:

Sono un po' confuso... :) Un problema:

1. C'è una posizione aperta di 0,1 lotto

2. Il suo valore di TakeProfit è di 50 pip.

3. Calcolo il suo profitto potenziale secondo la formula PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. dal calcolo ottengo il profitto potenziale di $5,00 (0,1*50*1,0).

La posizione va in rosso e a un certo punto si apre un'altra media Buy, ma con 0,2 lotti

1. Calcolo il Breakeven per queste due posizioni. La funzione è stata usata per molto tempo, come richiesto, e non ho nessuna lamentela finora:

2. Perfetto. Avete calcolato il livello di pareggio, ma... se ci mettete i gettoni di queste due posizioni, si chiuderanno a zero. Ok, credo. Ora ho bisogno di aggiungere a questo livello della BU tanti punti quanti sono necessari per ottenere un profitto totale, pari al precedentemente calcolato - $5.

3. Ed è qui che ho un blocco nel mio cervello. Cosa faccio: prendo $ 5, divido per il lotto totale di queste due posizioni (0,1 + 0,2 = 0,3), moltiplicato per TICK_VALUE

Ho 5/(0,3*1,0) = 16,6666 Poi lo moltiplico per Point (0,00016) e lo aggiungo al prezzo di Breakeven.

4. Perfetto. Le prese sono trasferite lì, ma mi sembra che il profitto totale di due Baiser che chiudono a questo livello non è uguale a 5 dollari - mi sembra meno. Questo può essere visto dal grafico dei test. Mostra chiaramente che quando si chiude una posizione, l'aumento del saldo è molto più grande di quando si chiudono più posizioni al livello di presa totale calcolato (potete vedere questi posti sul grafico dall'aspetto della linea del capitale su di essi). Grafico:


Dove mi sbaglio?

Capisco che si possa stampare il profitto totale, ma... Voglio capire dove potrei sbagliare nei miei calcoli, non il valore delle variabili. Li ho già stampati.

( 0.3 * 16 = 4.8 ) < ( 0.3 * 16.66666 = 5 )
Non so se questa è la differenza che avevi in mente, ma a causa dell'arrotondamento di 16,6666, il profitto sarà naturalmente inferiore ai 5 dollari che avevi previsto di ottenere.
 
artmedia70:

Sto diventando un po' pieno di me stesso... :) Il problema:

1. C'è una posizione aperta di 0,1 lotto

2. Il suo valore di TakeProfit è di 50 pip.

3. Calcolo il suo profitto potenziale secondo la formula PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. dal calcolo ottengo il profitto potenziale di $5,00 (0,1*50*1,0).

La posizione va in rosso e a un certo punto si apre un'altra media Buy, ma con 0,2 lotti

1. Calcolo il Breakeven per queste due posizioni. La funzione è stata usata per molto tempo, come richiesto, e non ho nessuna lamentela finora:

2. Perfetto. Avete calcolato il livello di pareggio, ma... se ci mettete i gettoni di queste due posizioni, si chiuderanno a zero. Ok, credo. Ora ho bisogno di aggiungere a questo livello della BU tanti punti quanti sono necessari per ottenere un profitto totale, pari al precedentemente calcolato - $5.

3. Ed è qui che ho un blocco nel mio cervello. Cosa faccio: prendo $ 5, divido per il lotto totale di queste due posizioni (0,1 + 0,2 = 0,3), moltiplicato per TICK_VALUE

Ho 5/(0,3*1,0) = 16,6666 Poi lo moltiplico per Point (0,00016) e lo aggiungo al prezzo di Breakeven.

4. Perfetto. Le prese sono trasferite lì, ma mi sembra che il profitto totale di due Baiser che chiudono a questo livello non è uguale a 5 dollari - mi sembra meno. Questo può essere visto dal grafico dei test. Mostra chiaramente che quando si chiude una posizione, l'aumento del saldo è molto più grande di quando si chiudono più posizioni al livello di presa totale calcolato (potete vedere questi posti sul grafico dall'aspetto della linea del capitale su di essi). Il grafico:


Dove mi sbaglio?

Capisco che si possa stampare il profitto totale, ma... Voglio capire dove potrei sbagliare nei miei calcoli, non il valore delle variabili. Li ho già stampati.

Non capisco perché debba essere così complicato.
Non renderebbe tutto più facile?

  double sumprofit=0;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
 

o come questo

double sumprofit;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
  if(sumprofit < -5) Dolivka();//  определенным лотом Sell или Buy
 
Per favore consigliatemi, non sono un programmatore - dove sono nel terminale gli indicatori scaricati (come vederli ed eseguirli). Li ho scaricati e installati, ma non riesco a trovarli nel terminale stesso?
 
fox6900:
Per favore consigliatemi, non sono un programmatore - dove sono nel terminale gli indicatori scaricati (come vederli ed eseguirli). Li ho scaricati e installati, ma non riesco a trovarli nel terminale stesso?

come li hai installati? Dicci come... forse avremo un indizio...
 
AccountNumber() può essere letto dalla dll e come? Almeno dammi un suggerimento su dove scavare. Intendo senza passare il valore della funzione alla dll, cioè dalla stessa libreria dinamica.