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

 
costy_ >> :

Dovrebbe andare a comprare quando l'apertura è superiore al ma1.

Capisco che "tumblr" in ||| come non so come denotare per esempio "se" (ma1>ma2&ma1>Open[1] "o" ma1>ma3&&ma1>Open[1]) "allora" Aprire BAY();


Si può vedere dal grafico che non tutte le condizioni sono soddisfatte!!!


Provato attraverso un altro su una candela 53 acquisti.


Quale altro modo di implementare la logica?


C'è solo un enorme numero di errori nel tuo pezzo di codice.

Descrivendoli tutti e spiegando perché è così e non altrimenti.... Non ho così tanto tempo.

L'unica cosa che correggerò per ora:

if (( ma1> ma2 && ma1> ma3 && Open[1]> ma1) || 
    ( ma2> ma1 && ma2> ma3 && Open[1]> ma1) ||
    ( ma3> ma1 && ma3> ma2 && Open[1]> ma1)
  )
  OpenBuy();
Forse ti darò altri consigli quando avrò tempo ....



 
Grazie, ho capito.
if (( ma1> ma2 && ma1> ma3  && Open[1]> ma1) || 
    ( ma2> ma1 && ma2> ma3  && Open[1]> ma1) ||
    ( ma3> ma1 && ma3> ma2  && Open[1]> ma1)
   )
    OpenBuy();

ma devo farlo.

if ( ma1> ma2 && ma1> ma3 && Open[1]> ma1)
OpenBuy();
if ( ma2> ma1 && ma2> ma3 && Open[1]> ma1)
OpenBuy();
if ( ma3> ma1 && ma3> ma2 && Open[1]> ma1)
OpenBuy();
 
costy_ >> :

>> e devo

Stessa cosa, solo che la prima opzione è più corta.

 
MrSoros >> :

Stessa cosa, solo che la prima opzione è più corta.

Purtroppo la prima opzione non ha funzionato correttamente sul grafico (è tutto strano).

Prima ovviamente più bella e la logica è così, è tipo prima l'addizione poi la moltiplicazione. =))

 
MrSoros >> :

I segni sono a posto.

L'idea stessa (chiusura CCI), dal mio punto di vista - non ahchy....

Ci sono già passato...

Ma è già una questione di strategia.

>> come molti commercianti, così tante strategie.


No, non è così che funziona l'algoritmo, ora chiude su CCI se il profitto è più di 10pp, e ho bisogno esattamente del livello di profitto di 10pp solo lì che chiuderebbe su klose, se il profitto è più di 10pp allora non dovrebbe chiudere su CCI. In questo momento chiude a CCI se il valore di profitto è più di 10pp (

Il significato stesso dell'algoritmo in questa funzione è diverso, c'è un livello di profitto di 10pp - che è un profitto virtuale, fissato dalla clausola nella direzione dell'indicatore SSI. Quando il prezzo va in profitto passa sempre questo livello come SSI guarda a destra, poi avendo passato questo livello il prezzo a volte dà un movimento inverso torna allo stato iniziale, o cambio di direzione di tendenza, - in questo caso SSI guarda sempre nell'altra direzione, e quando passa nella direzione opposta al livello 10pp un ordine è fissato come SSI guarderà nella direzione opposta.

  if (OrderType() == OP_BUY && cci_0< cci_1 && Bid-OrderOpenPrice() >= Point* profit) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
  if (OrderType() == OP_SELL && cci_0> cci_1 && OrderOpenPrice() - Ask >= Point* profit) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);

  

  cci_0< cci_1 && Bid-OrderOpenPrice() == Point* profit // может вот так? - так вообще не работает(
 

Salve.

Vedere se la dimensione del lotto è calcolata correttamente come percentuale del saldo:

//расчёт размера лота
double Lots()
   {
   double ls=MarketInfo(Symbol(),MODE_MINLOT)+MarketInfo(Symbol(),MODE_LOTSTEP)*MathFloor(( procentdepo*AccountBalance()/100000-MarketInfo(Symbol(),MODE_MINLOT))/MarketInfo(Symbol(),MODE_LOTSTEP));
     if( ls>MarketInfo(Symbol(),MODE_MAXLOT))   { ls=MarketInfo(Symbol(),MODE_MAXLOT); }
     if( ls<MarketInfo(Symbol(),MODE_MINLOT))   { ls=MarketInfo(Symbol(),MODE_MINLOT); }
   return( ls);
   }

dove procentdepo è la % del deposito

 
Piboli >> :

Salve.

Vedere se la dimensione del lotto è calcolata correttamente come percentuale del saldo:

dove procentdepo è la % del deposito.

Fate così.

extern double PercentLots  = 0.5;// внешние переменные


//то что ниже закиньте в конец кода
double GetLots() 
{
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);

if( PercentLots!=0)
 {
   double lot = NormalizeDouble(AccountBalance() * PercentLots  /1000.0 / 100.0, 2);
   if( lot < minlot) lot = minlot;
   if( lot > maxlot) lot = maxlot;
  }
  else lot= Lots; 
  return( lot);
  }  

//GetLots() - вставьте в ticket=OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,stop,Ask+Takeprofit*Point,"",MagicNumber,0,Green);
 
Piboli >> :

Salve.

Controllare se la dimensione del lotto è calcolata correttamente come percentuale del saldo:

dove procentdepo è la % del deposito

Meglio ancora, usa questa funzione di ottimizzazione del lotto, qui funziona MM se ci saranno scambi non redditizi, allora il lotto sarà ridotto a quello iniziale.

//внешние переменные
extern double Lots = 0.1;          //стартовый лот до баланса 500
extern double MaximumRisk = 0.1;   //увеличение лота на каждые 500 баланса
extern double DecreaseFactor = 3.0;//уменьшение лота при серии убыточных позиций


//то что ниже  закиньте перед стартом
double LotsOptimized() {
       double lot = Lots;
       int orders = OrdersHistoryTotal();
       int losses = 0;
       lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / 500.0, 2);
       if ( DecreaseFactor > 0.0) {
for (int i = orders - 1; i >= 0; i--) {
       if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY) == FALSE) {
       Print("Error in history!");
       break;
       }
if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;
if (OrderProfit() > 0.0) break;
if (OrderProfit() < 0.0) losses++;
}
if ( losses > 1) lot = NormalizeDouble( lot - lot * losses / DecreaseFactor, 2);
}
if ( lot < 0.1) lot = 0.1;
if ( lot > 1000.0) lot = 1000;
return ( lot);}

int start(){//старт

LotsOptimized() -- вставьте в ticket=OrderSend(Symbol(),OP_BUY, LotsOptimized(),Ask,3, stop,Ask+ Takeprofit*Point,"", MagicNumber,0,Green);
 
Solo che i due post precedenti non tengono conto del cambio di passo del lotto. Purtroppo.
 
Vinin >> :
Solo che i due post precedenti non tengono conto del passo del cambio di lotto. >> Purtroppo.

Posso fare, se ho capito bene il passo, quanto del saldo sarà aggiunto al lotto?

Oppure intendete avere una curva costante di aumento del lotto, ma non vedo il senso di una tale progressione.

extern double balans = 500; //шаг баланса

lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / balans, 1);
Motivazione: