[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 243

 
costy_ >> :

Debería ir a comprar cuando la apertura sea superior a ma1.

Entiendo que "tumblr" en || ya que no sé cómo denotar por ejemplo "si" (ma1>ma2&ma1>Open[1] "o" ma1>ma3&ma1>Open[1]) "entonces" Abrir BAY();


¡¡¡En el gráfico se puede ver que no se cumplen todas las condiciones!!!


Intentado a través de otra en una vela 53 compras.


¿Qué otra forma de aplicar la lógica?


Hay un gran número de errores en su código.

Describiendo todos ellos y explicando por qué es así y no de otra manera.... No tengo tanto tiempo.

Lo único que voy a corregir por ahora:

if (( ma1> ma2 && ma1> ma3 && Open[1]> ma1) || 
    ( ma2> ma1 && ma2> ma3 && Open[1]> ma1) ||
    ( ma3> ma1 && ma3> ma2 && Open[1]> ma1)
  )
  OpenBuy();
Quizá te dé más consejos cuando tenga tiempo ....



 
Gracias. Lo tengo.
if (( ma1> ma2 && ma1> ma3  && Open[1]> ma1) || 
    ( ma2> ma1 && ma2> ma3  && Open[1]> ma1) ||
    ( ma3> ma1 && ma3> ma2  && Open[1]> ma1)
   )
    OpenBuy();

pero tengo que hacerlo.

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_ >> :

>> y tengo que

Lo mismo, sólo que la primera opción es más corta.

 
MrSoros >> :

Lo mismo, sólo que la primera opción es más corta.

Lamentablemente la primera opción no funcionó correctamente en el gráfico (es todo raro).

Primero por supuesto más bonito y la lógica es así, es tipo de primero suma y luego multiplicación. =))

 
MrSoros >> :

Las señales están bien.

La idea en sí (cierre de la CCI), desde mi punto de vista - no ahchy....

Ya he pasado por esto antes...

Pero ya es una cuestión de estrategia.

>> tantos operadores, tantas estrategias.


No, no es así como funciona el algoritmo, ahora se cierra en CCI si el beneficio es más de 10pp, y necesito exactamente el nivel de beneficio de 10pp sólo allí que cerraría en klose, si el beneficio es más de 10pp entonces no debería cerrar en CCI. Ahora mismo cierra en CCI si el valor del beneficio es superior a 10pp (

El significado mismo del algoritmo en esta función es diferente, hay un nivel de beneficio de 10pp - que es un beneficio virtual, fijado por la cláusula en la dirección del indicador SSI. Cuando el precio entra en beneficios siempre pasa este nivel ya que el SSI mira hacia la derecha, entonces habiendo pasado este nivel el precio a veces da un movimiento inverso de vuelta al estado inicial, o cambio de dirección de la tendencia, - en este caso el SSI siempre mira en la otra dirección, y al pasar en la dirección opuesta al nivel de 10pp se fija una orden ya que el SSI mirará en la dirección opuesta.

  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 // может вот так? - так вообще не работает(
 

Hola.

Compruebe si el tamaño del lote está calculado correctamente como porcentaje 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);
   }

donde procentdepo es el % del depósito

 
Piboli >> :

Hola.

Compruebe si el tamaño del lote está calculado correctamente como porcentaje del saldo:

donde procentdepo es el % del depósito.

Haz esto.

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 >> :

Hola.

Compruebe si el tamaño del lote está calculado correctamente como porcentaje del saldo:

donde procentdepo es el % del depósito

Mejor aún, utilice esta función de optimización de lotes, aquí trabaja MM si habrá operaciones no rentables, entonces el lote se reducirá al inicial.

//внешние переменные
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);
 
Sólo que los dos puestos anteriores no tienen en cuenta el cambio de paso del lote. Desgraciadamente.
 
Vinin >> :
Sólo que los dos puestos anteriores no tienen en cuenta el paso del cambio de lote. >> Desgraciadamente.

¿Puedo hacer, si entiendo bien el paso, cuánto del saldo se añadirá al lote?

O te refieres a tener una curva constante de incremento de lotes, pero no veo el sentido de tal progresión.

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

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