[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 39

 
forexnew:

Si se ha definido inicialmente la relación entre StartBalance y StarLots según los riesgos establecidos, entonces hay que determinar el valor de la equidad:

if(AccountEquity()<StartBalance) Top-up = (AccountBalance()+(StartBalance-AccountEquity()))*New Lot/StarLots

Esto excluye AccountCredit(). Si le entiendo bien, claro.


Allí ya se da una fórmula:

Puedecalcular el volumen necesario (adicional ) utilizando la fórmula: V(adicional)= (SumInv / Patrimonio) * Lotes

Dónde:
SumInv - Cantidad de la nueva adición - su tamaño debe ser de alguna manera conocido programáticamente calculado para el momento específico de tiempo (previamente conocido),
Equidad - Equidad de la cuenta en el mismo punto en el tiempo - este valor se obtiene de la función que obtiene información sobre la cuenta de comercio:

double AccountEquity( ) 
Возвращает сумму собственных средств для текущего счета.  


Lotes - Volumen de activos comprados anteriormente (al principio), digamos 1 lote.
Esto significa que para corregir las posiciones, es necesario conocer el valor de la variableSumInv...

¿Cuál es la mejor manera de resolver el cálculo programático de esta variable, siempre que no sea igual a cero?

 
Roman.:


La fórmula ya está dada allí:

Puedecalcular el volumen necesario (adicional ) utilizando la fórmula: V(extra) = (SumInv / Patrimonio) * Lotes

Dónde:
SumInv - Cantidad de la nueva adición - su tamaño debe ser de alguna manera conocido programáticamente calculado para el momento específico de tiempo (previamente conocido),
Equidad - Equidad de la cuenta en el mismo punto en el tiempo - este valor se obtiene de la función que obtiene información sobre la cuenta de comercio:


Lotes - Volumen de activos comprados anteriormente (al principio), digamos 1 lote.
Esto significa que, para corregir las posiciones, es necesario conocer el valor de la variableSumInv...

¿Cuál es la mejor manera de resolver el cálculo programático de esta variable, siempre que no sea cero?

No sé en qué basar tus cálculos si no sabes en cuántos lotes quieres aumentar tu lote inicial. Esto es un factor puramente humano:

SumInv = "Quiero aumentar mi saldo en x libras" + SaldoInicial-Patrimonio

¿O no sabe cuál es el equilibrio inicial óptimo en el que debe basarse? Debe calcularse en función del tamaño de las paradas y del apalancamiento.

En mi EA, todos los cálculos se basan en el tamaño de las paradas, por lo que el saldo inicial óptimo (no es necesariamente igual al saldo inicial), y luego hay un cálculo automático del lote inicial.


 
forexnew:

No sé con qué empezar cuando no se sabe cuántos lotes se quiere aumentar el lote inicial. Esto es un factor puramente humano:

SumInv = "Quiero aumentar mi saldo en x libras" + SaldoInicial-Patrimonio

¿O no conoces el equilibrio óptimo de partida? Debe calcularse a partir del tamaño de las paradas y del apalancamiento.

En mi EA, todos los cálculos se basan en el tamaño de las paradas, por lo tanto, el saldo inicial óptimo (no es necesariamente igual al saldo inicial), y luego va el cálculo automático del lote inicial.


Todo se sabe. El lote inicial se incrementa en proporción a los depósitos realizados según la fórmula anterior. Una vez más, lea el enlace para leer la información - ajustes en el volumen de la posición cuando usted deposita/retira fondos.
Usted, si usted está en el tema - sólo tratar de responder a la pregunta: ¿Cómo determinar el software (utilizando un algoritmo, o cualquier fórmula, si no se puede directamente a la función de información de la cuenta ) - hubo adiciones a una cuenta de operaciones en qué momento (previamente conocido) durante el día (por ejemplo, a las 00 horas). Las demás variables para calcular el volumen adicional en la fórmula anterior, necesario para completar el anterior (de partida), son conocidas.

Chicos, decidme...

 
Roman.:

Todo se sabe. El lote inicial se incrementa en proporción a los depósitos realizados según la fórmula anterior. Una vez más, lea la información del enlace: los ajustes del volumen de la posición cuando deposita/retira fondos.
Usted, si usted está en el tema - sólo tratar de responder a la pregunta: ¿Cómo determinar el software (utilizando un algoritmo, o cualquier fórmula, si no se puede directamente a la función de información de la cuenta) - hubo adiciones a una cuenta de operaciones en cualquier momento (previamente conocido) durante el día (digamos a las 00 horas). Las demás variables para calcular el volumen adicional en la fórmula anterior, necesarias para completar el anterior (de partida), son conocidas.

Chicos, una pista...

Ahora está claro. Supongamos que necesitamos calcular mediante programación si ha habido una recarga/retirada en el último día. Adjunto el indicador. Sólo tiene que introducir el saldo que había al principio del periodo de cálculo y el número de días de cálculo. Espero haberle entendido bien.

Archivos adjuntos:
balans_9.mq4  6 kb
 

Hola a todos.

Estoy con mi indicador de nuevo. Siguiendo el consejo de mis viejos amigos, he intentado construir un bucle que calcule el valor de un punto de la línea y rellene el array del indicador con estos valores.

Parece que lo consigue uno a uno. Juntos se cuelga el terminal :=(

//for (i=Vnf2;i>0;i--)

// {int k=Vnf2;

// ArrayResize(Buf_DN,Vnf2+1);

// Buf_DN[i]= EcuaciónDirecta(Vnf2,VMF2,Vnf1,VMF1,k);

// k--;

// }

 

Un pequeño error, pero que sigue colgando en esta variante

int k=Vnf2;

for (i=Vnf2;i>0;i--)

// {

// ArrayResize(Buf_DN,Vnf2+1);

// Buf_DN[i]= EcuaciónDirecta(Vnf2,VMF2,Vnf1,VMF1,k);

// k--;

// }


 
Вопрос:  как сделать так ,чтобы эксперт мог открыть только одну позицию?

int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);

}

использую это примерно так:

if(NumberOfOrders(NULL)==0)
            {
            Print("Вошли в цикл");
            
             
                  Print("Покупаю");
                  NumderOrder=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-50*Point,Ask+50*Point,"1",0,0,Red);
                  Print(GetLastError());

                  }

В результате он все равно открывает несколько подряд не закрыв старую. Не могу понять в чем дело. Помогите плиз.

 
nuan:
if (ot>1      У ордеров  Buy ot=0, мож в этом дело?
 
nuan:
Estás utilizando las funciones de Igor Kim. Tiene definiciones de órdenes y posiciones. Las órdenes son órdenes pendientes y las posiciones son posiciones de mercado.
Se trata de calcular el número de órdenes pendientes , no el número de posiciones abiertas en el mercado.
 
Muchas gracias.
Razón de la queja: