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

 
trader265:
Chicos, muchas gracias a todos. Me pondré a ello. Si no funciona, ¿puedo molestarte?

Aunque no haya nadie hoy, tu post será visto mañana. No es como si tuviéramos una oficina aquí :) donde todo el mundo se va al final del día :)
 
drknn:


La lógica es la siguiente:

El límite de 8 buffers de indicadores se debe al propio lenguaje. No tiene sentido limitar el número de otras matrices, porque de todos modos no puede superar el tamaño de la RAM + el archivo de intercambio. Por lo tanto, no vale la pena exagerar. Me refiero a que se asigna una determinada cantidad de memoria para el array.

Este es mi problema:'SymbolSellColor' - desbordamiento de pila interno-simplifique el programa, por favor

Aumentar la pila no ayuda. El código es sencillo, no se me da bien escribir cosas complejas. RAM, swap - no hay problema, es suficiente.

 
Abzasc:

Este es mi problema: 'SymbolSellColor' - desbordamiento de pila interno-simplifique el programa, por favor

Stack overflow - no ayuda. El código es sencillo, no se me da bien escribir cosas complejas. RAM, swap - no hay problema, es suficiente.


Pregunte a los desarrolladores: tal vez haya algunos problemas que no conocemos.
 

Tengo una pregunta de por qué no se abre una orden pendiente, por favor ayúdenme.

extern int TakeProfit=100;
extern int StopLoss=100;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=100;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)

   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    Today=TimeDay(TimeCurrent());}
return(0);}

  
//+------------------------------------------------------------------+
int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double PR1=0; //Цена1
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=Ask+TakeProfit*Point;
    if(StopLoss>0) SL=Ask-StopLoss*Point;}
if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=Bid-TakeProfit*Point;
    if(StopLoss>0) SL=Bid+StopLoss*Point;}
if(Cmd==OP_BUYLIMIT)
   {PR1=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,0,0,CLR_NONE);
int tic1=OrderSend(Symbol(),Cmd,Lot,PR1,3,SL,TP,0,0,CLR_NONE);
if(tic<0) Print(GetLastError());
if(tic1<0) Print(GetLastError());
return(tic);}
 
FoxUA:

pregunta cual es el error por el cual una orden pendiente no se abre ayuda por favor

Reconozco mis comentarios en su código :))))))))))

Comprueba qué es exactamente lo que pasas a la función como parámetro y qué es exactamente lo que obtiene la función cuando se ejecuta: imprímelo.

 
drknn:
Reconozco mis comentarios en su código :))))))))))

Compruebe exactamente lo que pasa a la función como parámetro y exactamente lo que obtiene la función cuando se ejecuta - imprímalo.


Llevo unas 3 horas recogiendo el Lego constructor y el pedido pendiente no quiere abrirse.
 
drknn:
Reconozco mis comentarios en su código :))))))))))

Compruebe exactamente lo que pasa a la función como parámetro y exactamente lo que obtiene la función cuando se ejecuta - imprímalo.


Veo cómo hacer la siguiente función

int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,0,0,CLR_NONE);


después de esta función

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR1=0; //Цена1
while(!IsTradeAllowed()) Sleep(100);

if(Cmd==OP_BUYLIMIT)
   {PR1=Ask-Point*h;
    if(TakeProfit>0) TP=PR1+TakeProfit*Point;
    if(StopLoss>0) SL=PR1-StopLoss*Point;}

int tic1=OrderSend(Symbol(),Cmd,Lot,PR1,3,SL,TP,0,0,CLR_NONE);

if(tic1<0) Print(GetLastError());
return(tic1);}
 

Lo entiendo, sólo hay que establecer el operador no sólo un parámetro, pero a través de otra

 

Pregunta, ¿qué función es la responsable de la fecha de caducidad de una orden pendiente? No la veo y dice 147 Usar la fecha de caducidad no está permitido por el broker

 

expiración - fecha de expiración de la orden pendiente. Cuando llegue la hora de vencimiento, la orden pendiente se cerrará automáticamente en el servidor de operaciones. En algunos servidores de comercio la aplicación del tiempo de expiración de las órdenes pendientes puede estar prohibida. En este caso, al intentar establecer un valor distinto de cero del parámetro, la orden de negociación será rechazada.

¿Qué valor debe establecerse para que el pedido no sea rechazado?