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

 

necesito los precios de las órdenes pendientes de los stops y solía utilizar las órdenes pendientes así

PRAskL=Ask-Point*TakeProfit+Spread;  // цена OpenBuyLimitOrder
PRAskS=Ask+Point*TakeProfit+Spread;  // цена OpenBuyStopOrder
PRBidL=Bid+Point*TakeProfit-Spread;  // цена OpenSellLimitOrder
PRBidS=Bid-Point*TakeProfit-Spread;  // цена OpenSellStopOrder

где 
TakeProfit - глобальная переменая и грубо говоря ее значение постояно
Spread - временая переменая,



но мне не удобно брать цену через рынок и решил напрямую вот так
for(int h=1; h<=OrdersTotal(); h++)         
{if (OrderSelect(h-1,SELECT_BY_POS)==true)   
int Tip=OrderType();                   
if(HaveBuyOrder == true)continue; 
double PRAskS=OrderStopLoss();                   
double PRAskL=OrderTakeProfit();                    
int Tip1=OrderType();                           
if(HaveSellOrder == true)continue; 
double PRBidS=OrderStopLoss();                   
double PRBidL=OrderTakeProfit();   

но оно выдает ошибки 
Ошибка № 4107 при открытиии SELL ордера 
invalid takeprofit for OrderSend function

Ошибка № 4107 при открытиии BUY ордера              
invalid takeprofit for OrderSend function

necesito un stop y un precio del yen y necesito tener en cuenta los spreads

 
FoxUA:

necesito los precios de las órdenes pendientes de los stops y solía utilizar las órdenes pendientes así

como puedo resolver este problema, deberia poder tomar yenes en stops y ik beneficios y al mismo tiempo deberia tener en cuenta los spreads

Andrei, aquí vamos de nuevo, demasiado poco código, usted tiene un error en la función OrderSend, mientras que no podemos verlo o sus parámetros en esta sección de código. ¿Desea colocar órdenes pendientes basadas en stop-losses y take-profits de órdenes de mercado ya existentes?

 
ToLik_SRGV:

Andrei, de nuevo, demasiado poco código, tienes un error en la función OrderSend, y no lo vemos ni sus parámetros en esta parte del código. ¿Desea colocar órdenes pendientes basadas en los datos de stop-losses y take-profits de las órdenes de mercado ya existentes?

Sí, así es, poner órdenes pendientes basadas en los datos de stop-losses y take-profits de las órdenes de mercado existentes

todo el código es demasiado grande, es un ejemplo de cómo me funcionó y lo que intenté hacer pero no está bien, ¿qué sería lo correcto para mí?

 

tengo un ejemplo basado en reglas se abre pero solo una orden, es decir vender

Es decir, para las 4 órdenes pendientes, el precio de apertura en la pérdida de compra y la pérdida de venta, así como el stop de compra y el stop de venta son los mismos,

Quiero que un límite de compra se abra de una vez al cierre, por ejemplo, comprar en el stop,

GBPJPY,H1: Orden de venta abierta : 137.16
GBPJPY,H1: open #3897394 sell limit 0.30 GBPJPY at 137.16 sl: 138.36 tp: 135.96 ok
GBPJPY,H1: Orden de venta abierta : 134.76
GBPJPY,H1: abrir #3897393 vender stop 0.10 GBPJPY a 134.76 sl: 135.96 tp: 133.56 ok
GBPJPY,H1: orden de COMPRA abierta : 134.76
GBPJPY,H1: open #3897392 buy limit 0.30 GBPJPY at 134.76 sl: 133.56 tp: 135.96 ok
GBPJPY,H1: orden de COMPRA abierta : 137.16
GBPJPY,H1: abrir #3897391 comprar stop 0.10 GBPJPY a 137.16 sl: 135.96 tp: 138.36 ok
GBPJPY,H1: Orden de venta abierta : 135.96
GBPJPY,H1: abrir #3897390 vender 0.10 GBPJPY a 135.96 sl: 137.16 tp: 134.76 ok
GBPJPY,H1: orden de COMPRA abierta : 136.04
GBPJPY,H1: abrir #3897389 comprar 0.10 GBPJPY a 136.04 sl: 134.84 tp: 137.24 ok
GBPJPY,H1: inicializado
GBPJPY,H1 inputs: StopLoss=120; TakeProfit=120; Lot=0.1; Magic=777; Slippage=5;
GBPJPY,H1: cargado con éxito

for(int o=1; o<=OrdersTotal(); o++)                                   
{if (OrderSelect(o-1,SELECT_BY_POS)==true)                               
{ if (OrderSymbol()!= Curr_symb) continue;                          
  if (OrderType()>1) continue;      
{if(HaveBuyOrder == true) 
double PRAskL=OrderStopLoss();                   
double PRAskS=OrderTakeProfit();      
{                   
int Tip1=OrderType();                         
if(HaveSellOrder == true)
double PRBidL=OrderStopLoss();                   
double PRBidS=OrderTakeProfit(); } }                  
} }              
 
hedger:

Ayúdame a entenderlo.

En el gráfico que se puede abrir en el probador una vez finalizada la prueba, los indicadores en los que se basa el EA no siempre se dibujan. ¿Se puede arreglar esto y, si es así, cómo? Contéstame, por favor

¿Tal vez haya una respuesta a mi pregunta?
 
hedger:

¿Quizás haya una respuesta a mi pregunta?

void HideTestIndicators( bool hide)
La función establece la bandera para ocultar los indicadores llamados por el Asesor Experto. Cuando se abre el gráfico después de la prueba , los indicadores marcados con la bandera de ocultación no se mostrarán en el gráfico de prueba. Los indicadores se marcarán con el indicador de ocultación actual antes de cada llamada.
Hay que tener en cuenta que sólo los indicadores que se llaman directamente desde el experto bajo prueba pueden mostrarse en el gráfico de pruebas.
 
zhuki:

void HideTestIndicators( bool hide)
La función establece la bandera para ocultar los indicadores llamados por el Asesor Experto. Cuando se abre el gráfico después de la prueba, los indicadores marcados con la bandera de ocultación no se mostrarán en el gráfico de prueba. Los indicadores se marcarán con el indicador de ocultación actual antes de cada llamada.
Hay que tener en cuenta que sólo los indicadores que se llaman directamente desde el Asesor Experto bajo prueba pueden mostrarse en el gráfico de prueba.

¡Gracias, Igor! Tuve que aprender lo básico a ciegas.
 

entonces, ¿alguien sabe cómo arreglar el código anterior para establecer el valor de las variables así

PRAskL=StopLoss de la orden de compra + Spread
PRAskS=TakeProfit de la orden de compra + Spread
PRBidL=StopLoss Órdenes de venta y distribución
PRBidS=Ordenes de venta y distribución de beneficios

 
FoxUA:

entonces, ¿alguien sabe cómo arreglar el código anterior para establecer los valores de las variables así

PRAskL=Órdenes StopLoss Compra + Spread
PRAskS=Órdenes TakeProfit Compra + Spread
PRBidL=Órdenes StopLoss Venta-Spread
PRBidS=Órdenes TakeProfit Venta-Spread

Si tiene errores relacionados con stops erróneos, entonces haga una comprobación del tamaño de los niveles de stop; utilícelos también para comprobar las órdenes pendientes - no puede poner menos...

Por ejemplo:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //Distancia mínima de ajuste del stop

 
artmedia70:

Si tiene errores relacionados con stops erróneos, entonces haga una comprobación del tamaño de los niveles de stop; utilícelos también para comprobar las órdenes pendientes - no se permite menos...

Por ejemplo:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //distancia mínima de ajuste del stop


el último se abre sin errores, pero sólo se abre con datos de Venta. es un recorte del registro y no es la distribución de precios correcta que describí.

Aquí están.

PRAskL=StopLoss Órdenes de compra + Spread
PRAskS=TakeProfit de las órdenes de compra + Spread
PRBidL=StopLoss Órdenes de venta y distribución
PRBidS=Orden de venta con ganancia

así es como se ve ahora

PRAskL=StopLoss Orden de venta

PRAskS=TakeProfit Órdenes de venta

PRBidL=StopLoss Orden de venta

PRBidS=Orden de venta TakeProfit