Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 448

 
Forexman77:
Come implementarlo approssimativamente? Le altre funzioni mi sono familiari, ma con gli ordini e gli array non ho ancora capito bene.

È qualcosa del genere, credo

 // Учёт ордеров
   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. Mi spiego - il vostro forum è come una speranza per l'ultima roccaforte competente del prog. e l'inserimento di dimensioni - è così che la scrittura PERIOD_W1 lo vedema né l'uso di dimensioni né l'uso di dati fissi sotto forma di date ottengono alcun effetto desiderato. Ho postato una domanda specifica su Friday - a proposito il tuo codice non compila perché dice 'version' - proprietà sconosciuta, quindi se non sai come mettere DayOfWeek e 5 (il numero di venerdì) nel codice altre opzioni non ti aiuteranno .


Quindi stai dicendo la cosa sbagliata.

File:
vitek2010.mq4  2 kb
 

Buon pomeriggio a tutti. Sto postando un indicatore che purtroppo si blocca e non disegna le frecce in tempo, ma solo quando si aggiorna il grafico... Passaggio a diversi TF.

Se qualcuno può fare in modo che l'indicatore si aggiorni alla fine di ogni candela..., diciamo 5-10 secondi prima della chiusura della candela? O forse c'è un altro modo per risolvere questo problema?

Grazie in anticipo.

File:
 
Vinin:


Quindi stai dicendo la cosa sbagliata.


Ho messo nell'indicatore - cosa mostra - non è chiaro. la mia variante aveva la condizione di continuazione o cambiamento nel movimento precedente . cioè sotto o sopra la linea dello zero . e tu hai tutto sopra e su tutte le settimane non è così semplice . non dovresti deviare dalla base (mia) variante e semplificare le cose . devi fare sulla base del mio indicatore . Sinceramente.
 
alsu:

Qualcosa del genere, credo.


Mettere le linee
int Ticket[5];
ArrayInitialize(Ticket,0);

invece diint Ticket; vengono fuori degli errori:

'=' - parentesi quadra sinistra prevista per l'array('=' - parentesi quadra sinistra, prevista per l'array)

'>' - parentesi quadrata sinistra prevista per l'array ('=' - parentesi quadrata sinistra prevista per l'array)

'>' - token inatteso('>' - token inatteso)

')' - assegnazione prevista ('' - assegnazione prevista)

'continue' - 'break' o 'continue' usato solo all'interno di alcuni cicli)

e molto di più.

 

Perché il consulente apre un numero infinito di ordini, aiutatemi a risolverlo

grazie

extern double tp = 100;
extern double l = 0,1;




int start()
{
// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
else
{
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;}
else
{
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);
}
ritorno;
}

 
addict:

Perché il consulente apre un numero infinito di ordini, aiutatemi a risolverlo

grazie

extern double tp = 100;
extern double l = 0,1;




int start()

aggiungere se(OrdiniTotali()==0)




// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
else
{
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;}
else
{
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);
}
ritorno;
}

 
denis77515:

aggiungere se(OrdiniTotali()==0)

l'ordine di acquisto è aperto da uno, e per la vendita - di nuovo, un numero infinito di ordini
 

Buon pomeriggio.

Non capisco come funziona

03:00:24 '9473965': ordine vendere 0,01 GBPUSD apertura a 0,00000 sl: 1,65314 tp: 0,00000 fallito [S/L o T/P non valido]

con questo codice

RefreshRates();
tick=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),30,ssll,0,CMM,MAGIC,0,Blue);
     
perché il prezzo di apertura è zero
 

Buon pomeriggio.

Puoi aiutare a creare una tale funzione?

Quante barre del grafico corrente dall'ultima ora conosciuta del server (TimeCurrent()) a un certo giorno dalla prima barra diquel giorno (TimeDay(Time[80])?

Grazie in anticipo!

Motivazione: