[¡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 594

 

Tomé la teoría de la probabilidad y estadísticamente si la apertura de la orden estará dentro de 50 pips del precio, entonces en la apertura de la orden con 10 pips de beneficio es más fácil de alcanzar - si también habrá 10 pips de stop loss (incluso la propagación no es un problema) el movimiento de la tendencia es una gran cosa ...

Añadir un stop loss, independientemente de StepStop

//+------------------------------------------------------------------+
//| Volfram.mq4 ||
//| Vova-x@list.ru |
//| |
//+------------------------------------------------------------------+
#property copyright "Vova-x@list.ru"
#enlace de la propiedad ""
//-----------------------------------------
extern TakeProfit=10;
extern int StepStop=45;
extern double Lots=0.01;
extern bool MoneyManagement=true;
extern inttern MarginPercent=10;
//-------------------------------------------
int nivel_venta_parada;
int nivel_compra_stop;

//----------------------------------------------------------
void init()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Imprime("nivelcompra_parada: "+minstop;)
}
//-----------------------------------------------------------
void start()
{
if (!IsTradeAllowed()) return;
level_buy_stop=0;
level_sell_stop=0;
StepingStop();
StepingPendings();
if (TotalBuy ()==0 && TotalBuyStop ()==0) SetBuyStop ();
if (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comentario("Nivel de compra Stop=",nivel_compra_stop*Punto,
"\N -", "Nivel Venta Stop=",nivel_venta_stop*Punto);
}
//---------------------------------------------------------------------------------------------
void ParadaDePaso()
{
if (StepStop<1) return;
int ask, bid, open, stop, x;
doble pérdida;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUY)
{
bid=MathRound(Oferta/Punto);
open=MathRound(OrderOpenPrice()/Punto);
stop=MathRound(OrderStopLoss()/Punto);
x=(oferta-abierta)/Parada; x--; x*=Parada;
level_sell_stop=open+x;
si (stop>=open+x)
pérdida=(abierto+x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
if (OrderType()==OP_SELL)
{
ask=MathRound(Ask/Point);
open=MathRound(OrderOpenPrice()/Punto);
stop=MathRound(OrderStopLoss()/Punto);
x=(open-ask)/StepStop; x--; x*=StepStop;
level_buy_stop=abierto-x;
if (stop>0 && stop<=open-x)
pérdida=(open-x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//----------------------------------------------------------------------------
void PasarPendientes()
{
int ask, bid, open;
doble precio, pérdida, beneficio;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUYSTOP)
{
si (nivel_compra_stop==0)
open=MathRound(OrderOpenPrice()/Punto);
si (open<=nivel_compra_stop)
precio=nivel_de_compra*punto;
Pérdida=precio-PasoStop*Punto;
profit=0; if (TakeProfit>0) profit=precio+TakeProfit*Punto;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
if (OrderType()==OP_SELLSTOP)
{
si (nivel_venta_stop==0)
open=MathRound(OrderOpenPrice()/Punto);
si (open>=nivel_sell_stop)
precio=nivel_de_venta*punto;
pérdida=precio+StepStop*Punto;
profit=0; if (TakeProfit>0) profit=precio-TakeProfit*Punto;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
}
}
//-------------------------------------------------------------------
void SetBuyStop()
{
double lotes=LotsCounting();
double price=Bid+StepStop*Point;
doble pérdida=precio-PasoStop*Punto;
double profit=0; if (TakeProfit>0) profit=precio+TakeProfit*Punto;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,lotes,precio,0,pérdida,beneficio,"",0,0,CLR_NONE);
if (ticket<1) Print("La fijación de una orden pendiente ha fallado con el error #",GetLastError()," ",(GetLastError());
}

void SetSellStop()
{
double lotes=LotsCounting();
doble precio=PasoParada*Punto;
doble pérdida=precio+StepStop*Punto;
double profit=0; if (TakeProfit>0) profit=precio-TakeProfit*Punto;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,lotes,precio,0,pérdida,beneficio,"",0,0,CLR_NONE);
if (ticket<1) Print("La fijación de una orden pendiente ha fallado con el error #",GetLastError()," ",(GetLastError());
}


int CompraTotal()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_BUY) count++;
}
devolver (contar);
}

int TotalBuyStop()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_BUYSTOP) count++;
}
devolver (contar);
}

int VentaTotal()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_SELL) count++;
}
devolver (contar);
}

int TotalSellStop()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_SELLSTOP) count++;
}
devolver (contar);
}

double LotsCounting()
{
lotes dobles=Lotes;
si (Gestión del dinero)
{
double batchize=MarketInfo(Symbol(),MODE_LOTSIZE);
double freemargin=AccountFreeMargin();
lotes=0; if (lotsize>0) lotes=NormalizeDouble((MarginPercent*freemargin/lotsize),1);
}
si (lotes>10) lotes=NormalizarDoble(lotes,0);
si (lotes<0,01) lotes=0,01;
retorno (lotes);
}


// Fin

 
drknn:

La razón por la que no respondieron es probablemente porque escribir un indicador de este tipo es sencillo y muy probablemente innecesario.
Gracias, pero ¿qué pasa con eso? O dime, ¿quizás en los ajustes del terminal existe la posibilidad de mostrar las marcas de las horas de forma más clara a lo largo de toda la escala de tiempo?
 

Amigos, ¡ayuda! No puedo calcular el volumen máximo de una operación a abrir

// Расчет максимального объема
   for (double m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>30; m = m + 0.1)
      {
       Max_lots   = m;
       double Ost = AccountFreeMarginCheck(Symbol(),OP_SELL,m);
      }

¡Max_lots es siempre cero!


Y la segunda pregunta, ¿cómo se calcula el NIVEL?


 
root:
Gracias, pero aún así... O dime, ¿quizás en los ajustes del terminal hay una opción para mostrar los marcadores de hora de forma más clara a lo largo de toda la escala de tiempo?
Lo entiendo, la falta de este indicador es lo último que te impide ganar dinero en forex. Definitivamente no, pero Urain tiene uno similar para 8 líneas. Si no puedes, pregunta al autor, está en el foro.
Archivos adjuntos:
time_line.mq4  2 kb
 

En términos sencillos, el volumen se puede calcular de la siguiente manera

/* вычитаем средства обозначенные на стопаут c учетом процента риска */
   curBalance = AccountFreeMargin() * (1 - AccountStopoutLevel() / 100.) * percent; // percent - от 0 до 100
/* множитель (1 или 10) зависит от четырех-пятизначности  */
   koeff = iif(DIGITS == 3 || DIGITS == 5, 10, 1);
/* расчет рабочего лота, нормализация */
   lot = NL(curBalance / (koeff * lossPoint * TICKVALUE + MARGINREQUIRED)); //lossPoint - количество пунктов потерь
   if (lot < MINLOT)    lot = 0;
   if (lot > MAXLOT)    lot = MAXLOT;

/* DIGITS,MINLOT,MAXLOT,TICKVALUE,MARGINREQUIRED получаем из Marketinfo() */


y nivel = AccountEquity() / AccountFreeMargin() * 100;

 
keekkenen:



y nivel = AccountEquity() / AccountFreeMargin() * 100;

NO es correcto. Esta fórmula no funciona Nivel
 
Noterday:
NO es correcto. Esta fórmula no calcula el nivel

Sí, es un error, nivel = AccountEquity() / AccountMargin() * 100;

 
keekkenen:

Sí, es un error, nivel = AccountEquity() / AccountMargin() * 100;

Gracias :)
 
Hola. Chicos, por favor ayúdenme con una cosa. Ni siquiera he oído hablar de ella, pero ¿y si alguien la tiene? La idea es transferir todos los objetos seleccionados de un gráfico a otro. Es decir, supongamos que necesito transferir el marcado de onda de todos los tiempos de un símbolo a una ventana. Es difícil repetir el margen de beneficio cambiando los plazos, debido a la pesadez del cálculo (el cálculo de 30-50 tendencias en M1 hace que el terminal se destaque - y es sólo alrededor de 16 - 24 horas de un gráfico). ¿Quizás haya un script que copie los objetos del gráfico (en este caso, las líneas de tendencia) con la posterior transferencia de toda la matriz de líneas de tendencia a otra ventana? ¿O tal vez exista la posibilidad de combinar varias plantillas en una sola ventana?
 

Perdón por la metedura de pata, pero hoy es el día.

=====

Y se balancea a una altura sin sentido...

Un par de frases que llegaron volando desde aquí...

===========

Andrei Voznesensky.

Razón de la queja: