Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 448

 
Forexman77:
¿Cómo aplicarlo a grandes rasgos? Las otras funciones las conozco, pero con las órdenes y los arrays aún no las entiendo del todo.

Es algo así, supongo

 // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int Ticket[5];
   ArrayInitialize(Ticket,0);
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>5)                           // Было не более одного орд, стало не более пяти
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket[Total-1]=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
   // Открытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Total < 5 && Opn_B==true)     // Открытых орд. нет +. Было Total < 1, стало Total < 5
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         SL=Bid - New_Stop(StopLoss)*Point;     // Вычисление SL откр.
         TP=Bid + New_Stop(TakeProfit)*Point;   // Вычисление TP откр.
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Buy ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
   // Закрытие ордеров
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy и есть критерий закр
        {
          for(i=0;i<5;i++)                             
          {
            if (Ticket[i]==0) continue;           

            Alert("Попытка закрыть Buy ",Ticket[i],". Ожидание ответа..");
            RefreshRates();                        // Обновление данных
         
            Ans=OrderClose(Ticket[i],Lot,Bid,2);      // Закрытие Buy

            if (Ans==true)                         // Получилось :)
            {
               Alert ("Закрыт ордер Buy ",Ticket[i]);
            }

            if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            {
               i--;
               continue;                           // Повторная попытка
            }

         }
 
Vitek2010:
No, no lo hace. Me explico - su foro es como una esperanza para el último reducto competente de prog. y la inserción de tamaño - así lo ve la escritura PERIOD_W1 pero ni el uso de tamaño ni el uso de datos fijos en forma de fechas consiguen ningún efecto deseado. He publicado una pregunta específica sobre el viernes - por cierto tu código no compila porque dice "versión" - propiedad desconocida, así que si no sabes cómo poner DayOfWeek y 5 (el número del viernes) en el código otras opciones no ayudarán .


Así que estás diciendo algo equivocado.

Archivos adjuntos:
vitek2010.mq4  2 kb
 

Buenas tardes a todos. Estoy publicando un indicador que desgraciadamente se cuelga y no dibuja las flechas a tiempo, sino sólo cuando se refresca el gráfico... Cambiar a diferentes TFs.

Si alguien puede hacer que el indicador se actualice al final de cada vela..., bueno digamos 5-10 segundos antes de que la vela se cierre? ¿O tal vez haya otra forma de resolver este problema?

Gracias de antemano.

Archivos adjuntos:
 
Vinin:


Así que estás diciendo algo equivocado.


Puse en el indicador - lo que muestra - no está claro. mi variante tenía la condición de la continuación o el cambio en el movimiento anterior . es decir, por debajo o por encima de la línea de cero . y usted tiene todo por encima y en todas las semanas no es tan simple . no debe desviarse de la base (mi) variante y simplificar las cosas . hay que hacer sobre la base de mi indicador . Sinceramente.
 
alsu:

Algo así, supongo.


Poner las líneas
int Ticket[5];
ArrayInitialize(Ticket,0);

en lugar deint Ticket; salen errores:

'=' - paréntesis cuadrado izquierdo esperado para array('=' - paréntesis cuadrado izquierdo, esperado para array)

'>' - paréntesis cuadrado izquierdo esperado para la matriz ('=' - paréntesis cuadrado izquierdo esperado para la matriz)

'>' - token inesperado('>' - Token inesperado)

')' - asignación esperada('' - asignación esperada )

'continue' - 'break' o 'continue' utilizados sólo dentro de algunos bucles )

y mucho más.

 

Por qué el asesor abre un número interminable de órdenes, ayúdenme a solucionarlo

gracias

extern double tp = 100;
extern double l = 0.1;




int inicio()
{
// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
si no
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
if(OrderMagicNumber() ==2 >0){return;}
si no
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
volver;
}

 
addict:

Por qué el asesor abre un número interminable de órdenes, ayúdenme a solucionarlo

gracias

extern double tp = 100;
extern double l = 0.1;




int inicio()

añadir if(OrdersTotal()==0)




// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
si no
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
if(OrderMagicNumber() ==2 >0){return;}
si no
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
volver;
}

 
denis77515:

add if(OrdersTotal()==0)

La orden de compra se abre por uno, y para la venta - de nuevo, un número infinito de órdenes
 

Buenas tardes.

No entiendo cómo funciona esto

03:00:24 '9473965': orden de venta de 0,01 GBPUSD de apertura a 0,00000 sl: 1,65314 tp: 0,00000 fallida [S/L o T/P no válidos].

con este código

RefreshRates();
tick=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),30,ssll,0,CMM,MAGIC,0,Blue);
     
por qué el precio de apertura es cero
 

Buenas tardes.

¿Puede ayudar a crear una función de este tipo?

¿Cuántas barras del gráfico actual desde la última hora conocida del servidor (TimeCurrent()) hasta un determinado día por la primera barra deese día (TimeDay(Time[80])?

Gracias de antemano.

Razón de la queja: