Domande da un "manichino" - pagina 274

 
È solo la chiusura che non funziona?
 
Sì, e si apre magnificamente.
 

E provate a inserire un controllo dell'ordine prima di OrderSend per correttezza:

//---- Проверка торгового запроса на корректность
if(!OrderCheck(request,check))
{
 ("Ошибка проверки ордера OrderCheck(): ",ResultRetcodeDescription(check.retcode));
}



//+------------------------------------------------------------------+
//| возврат стрингового результата торговой операции по его коду     |
//+------------------------------------------------------------------+
string ResultRetcodeDescription(int retcode)
  {
   string str;
//----
   switch(retcode)
     {
      case TRADE_RETCODE_REQUOTE: str="Реквота"; break;
      case TRADE_RETCODE_REJECT: str="Запрос отвергнут"; break;
      case TRADE_RETCODE_CANCEL: str="Запрос отменен трейдером"; break;
      case TRADE_RETCODE_PLACED: str="Ордер размещен"; break;
      case TRADE_RETCODE_DONE: str="Заявка выполнена"; break;
      case TRADE_RETCODE_DONE_PARTIAL: str="Заявка выполнена частично"; break;
      case TRADE_RETCODE_ERROR: str="Ошибка обработки запроса"; break;
      case TRADE_RETCODE_TIMEOUT: str="Запрос отменен по истечению времени";break;
      case TRADE_RETCODE_INVALID: str="Неправильный запрос"; break;
      case TRADE_RETCODE_INVALID_VOLUME: str="Неправильный объем в запросе"; break;
      case TRADE_RETCODE_INVALID_PRICE: str="Неправильная цена в запросе"; break;
      case TRADE_RETCODE_INVALID_STOPS: str="Неправильные стопы в запросе"; break;
      case TRADE_RETCODE_TRADE_DISABLED: str="Торговля запрещена"; break;
      case TRADE_RETCODE_MARKET_CLOSED: str="Рынок закрыт"; break;
      case TRADE_RETCODE_NO_MONEY: str="Нет достаточных денежных средств для выполнения запроса"; break;
      case TRADE_RETCODE_PRICE_CHANGED: str="Цены изменились"; break;
      case TRADE_RETCODE_PRICE_OFF: str="Отсутствуют котировки для обработки запроса"; break;
      case TRADE_RETCODE_INVALID_EXPIRATION: str="Неверная дата истечения ордера в запросе"; break;
      case TRADE_RETCODE_ORDER_CHANGED: str="Состояние ордера изменилось"; break;
      case TRADE_RETCODE_TOO_MANY_REQUESTS: str="Слишком частые запросы"; break;
      case TRADE_RETCODE_NO_CHANGES: str="В запросе нет изменений"; break;
      case TRADE_RETCODE_SERVER_DISABLES_AT: str="Автотрейдинг запрещен сервером"; break;
      case TRADE_RETCODE_CLIENT_DISABLES_AT: str="Автотрейдинг запрещен клиентским терминалом"; break;
      case TRADE_RETCODE_LOCKED: str="Запрос заблокирован для обработки"; break;
      case TRADE_RETCODE_FROZEN: str="Ордер или позиция заморожены"; break;
      case TRADE_RETCODE_INVALID_FILL: str="Указан неподдерживаемый тип исполнения ордера по остатку "; break;
      case TRADE_RETCODE_CONNECTION: str="Нет соединения с торговым сервером"; break;
      case TRADE_RETCODE_ONLY_REAL: str="Операция разрешена только для реальных счетов"; break;
      case TRADE_RETCODE_LIMIT_ORDERS: str="Достигнут лимит на количество отложенных ордеров"; break;
      case TRADE_RETCODE_LIMIT_VOLUME: str="Достигнут лимит на объем ордеров и позиций для данного символа"; break;
      case TRADE_RETCODE_INVALID_ORDER: str="Выставляемый ордер имеет запрещенный или неверный тип"; break;
      case TRADE_RETCODE_POSITION_CLOSED: str="Операция с позицией невозможна, так как позиция отсутствует"; break;
      default: str="Неизвестный результат";
     }
//----
   return(str);
  }
 

Oh, e un'altra cosa: nella procedura di chiusura, assicuratevi di annullare le strutture prima di riempirle

ZeroMemory(tradeRequest);
ZeroMemory(tradeResult);


Dopo

SymbolInfoTick(symb, price);

inserire queste due linee.

 
i_logic:

Oh, e un'altra cosa: nella procedura di chiusura, assicuratevi di annullare le strutture prima di riempirle


Dopo

inserire queste due righe.

No, bisogna PRIMA:

for(int i=PositionsTotal()-1;i>=0;i--)
    {
      ZeroMemory(tradeRequest);
      ZeroMemory(tradeResult);
      ZeroMemory(price);
      
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);

aiutato. grazie.

 

Ciao, costruendo una griglia fibo in un EA

ObjectCreate(0, "Fibo",OBJ_FIBO,0,time2,price1);

Tutto funziona, ma ora voglio ottenere il prezzo al 23,6%, non c'è una funzione semplice per questo scopo?

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); Questo dà 0,236, cioè non il prezzo ma il livello.

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_PRICE,1); Questo dà il prezzo al livello 0 (o al livello 100).

Non ho trovato altro che questi due (OBJPROP_PRICE e OBJPROP_LEVELVALUE).

Potete dirmi come si può risolvere questo problema. Grazie!

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
zhurkin:

Puoi dirmi come risolvere questo problema? Grazie!

Ci sono solo due operazioni aritmetiche. Moltiplicazione (0,236 moltiplicato per la differenza tra i prezzi dello zero e del primo livello) e poi addizione (aggiungere il risultato della moltiplicazione al prezzo del livello zero).

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

Ciao, grazie per la risposta precedente!

Sto usando iCustom(NULL,0, "Examples\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) Sto collegando uno zigzag regolare. Tutto sembra essere a posto con i calcoli. Potresti consigliarmi come abilitare l'EA a disegnare automaticamente questo indicatore collegato sul grafico? Al momento devo aggiungere l'indicatore zigzag manualmente dopo aver eseguito l'EA e impostare i suoi parametri come nell'EA! Grazie.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
zhurkin:

Ciao, grazie per la risposta precedente!

Sto usando iCustom(NULL,0, "Examples\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) In generale sto collegando un regolare zigzag. Tutto sembra essere a posto con i calcoli. Potresti consigliarmi come abilitare l'EA a disegnare automaticamente questo indicatore collegato sul grafico? Al momento devo aggiungere l'indicatore zigzag manualmente dopo aver eseguito l'EA e impostare i suoi parametri come nell'EA! Grazie.

https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - Документация по MQL5
 

Ho iniziato a studiare OOP.

Ho avuto un problema quando ho scritto un discendente di una classe base, il compilatore scrive - "'ХХХХХХХХХХХХ' - conteggio dei parametri sbagliato".

Ho cercato la ragione per molto tempo, ho riletto articoli e libri di riferimento,

ma l'ho trovato - la classe base ha un costruttore, è uno e parametrico.

Anch'io ho trovato una soluzione: il sovraccarico della funzione costruttore con il costruttore di default,

ma poi devo trascinare tutti i parametri del costruttore parametrico della classe base al costruttore discendente per una logica corretta.

Ci sono altri modi?

C'è un modo, quando si dichiara una classe discendente, di distribuire a chi cosa? Per esempio: questi parametri al costruttore della classe base e questi parametri affinché il discendente non si annoi...