Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 90

 
WindSW:
Tutte le opzioni sono elencate tranne la chiusura. Ecco perché lo chiedo.

vi è già stato detto.

Yedelkin:

"Chiudere una posizione" è solo il risultato di una richiesta di trading, le cui regole sono le stesse.

Cioè prendere la richiesta "aperta" e cambiare il tipo di ordine.

Riempite i campi obbligatori non necessari con degli zeri.

 

Yedelkin:
Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.

sergeev:

ti hanno già risposto!

Grazie!

Ho un'altra domanda: la richiesta qui sotto viene inviata e viene aperta una posizione, ma stop e profitto non sono impostati. Li ho già attorcigliati in diversi modi, ma niente è servito. Qual è il problema, cosa sto sbagliando?

   MqlTick latest_price;       // Будет использоваться для текущих котировок
   if(!SymbolInfoTick(_Symbol,latest_price)) return;        // получить текущее значение котировки в структуру типа MqlTick
   ...
   if(uBuy && opSell==false)    
     {
      if(opBuy) return;                                                // при наличии позиции не добавлять к открытой позиции на покупку
      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask
      mrequest.sl = NormalizeDouble(latest_price.ask - StopLoss*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // символ
      mrequest.volume = WorkLot;                                                // количество лотов для торговли
      mrequest.magic = EA_Magic;                                            // Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку
      mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
      mrequest.deviation=Slippage;                                               // проскальзывание от текущей цены
      OrderSend(mrequest,mresult);                                          // отсылаем ордер
      if(mresult.retcode==10009 || mresult.retcode==10008)                  //запрос выполнен или ордер успешно помещен
        {
         Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
        }
      else
        {
         return;
        }
     }
 

come faccio a sommare gli ultimi 3 valori di ZigZag?

        double summ=0;//переменная, в которую все суммируется
        int w=0;//счетчик 3 удачных сумирований
        int count_for_buf=0;//Счетчик переходов по буферу ZigZag
        while (w<=3)
         {
         summ=summ+ZigzagBuffer[rates_total-count_for_buf];
         count_for_buf++;
         if (ZigzagBuffer[rates_total-count_for_buf]!=0)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
          {
          w++;
          }
         }
In questo modo per qualche motivo si blocca o succede qualcos'altro
 
WindSW: La richiesta qui sotto viene inviata e viene aperta una posizione, ma non vengono piazzati stop e profitti. Ho già provato diverse impostazioni, ma niente è servito. Qual è il problema, cosa sto sbagliando?

Ricordate che le richieste di commercio "per aprire una posizione" hanno diverse opzioni da riempire? Alcune di queste opzioni coinvolgono sl/tp, altre no. In altre parole, che modalità di trading ha il vostro broker?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Yedelkin:

Ricordate che le richieste di commercio "per aprire una posizione" hanno diverse opzioni da riempire? Alcune di queste opzioni coinvolgono sl/tp, altre no. In altre parole, qual è la modalità di trading del vostro broker?

Broker Alpari. Nella modalità manuale viene inserito solo un nuovo ordine nell'esecuzione dello scambio. Non c'è altra opzione per entrare dal mercato. Capisco che questa è una richiesta di Exchange Execution. Grazie, ho risolto il problema. Potete dirmi perché il compilatore elabora il seguente codice:

if(CopyBuffer(ema,0,0,3,emaVal)<0) return; // copia i nuovi valori dei buffer degli indicatori negli array

и

IndicatoreRilascio(ema);

Appare un avviso di "possibile perdita di dati a causa della conversione del tipo". Non riesco a capire cosa c'è che non va, non riesco a risolvere il problema da ieri sera.

 
WindSW: Potete dirmi perché il compilatore giura sulle seguenti stringhe:

if(CopyBuffer(ema,0,0,3,emaVal)<0) return; // copia i nuovi valori del buffer degli indicatori negli array

и

IndicatoreRilascio(ema);

Appare un avviso di "possibile perdita di dati a causa della conversione del tipo". Non riesco a capire cosa c'è che non va, non sono riuscito a risolvere il problema da ieri sera.

E che tipo di ema variabile?
 
Yedelkin:
Che tipo di variabile è l'ema?
doppio
 
WindSW doppio
Capito. Vedere quale tipo dovrebbe essere la variabile per memorizzare le maniglie dell'indicatore e abbinarla.
 
Yedelkin:
Capito. Vedere quale tipo di variabile dovrebbe essere usata per memorizzare le maniglie degli indicatori, e abbinarla.
E ho perso l'abitudine di scriverlo come in 4. Grazie ancora per i consigli!
 
lazarev-d-m:

come si sommano gli ultimi 3 valori di ZigZag?

In questo modo per qualche motivo si blocca o succede qualcos'altro

Vi darò il mio suggerimento:

   double   summ=0;  //переменная, в которую все суммируется
   int      w=0;     //счетчик 3 удачных сумирований
   for(int i=0; i<rates_total; i++)
     {
      if(ZigzagBuffer[rates_total]!=0 && w<3)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
        {
         summ+=ZigzagBuffer[i];
         w++;
        }
      if(w>2) break;
     }