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

 
Pacman:

Mi scuso per aver duplicato una domanda, ma non posso fare i seguenti esempi finché non risolvo il problema.

Per favore, aiutatemi a capire.

Ho scritto un semplice script per aprire un ordine (dal tutorial MQL4).

L'ho codificato per strumenti a 4 cifre.

Ho un conto con una società che ha 5 cifre dopo il punto.

Puoi per favore modificare il codice per 5 cifre e perché l'errore 4109 (trading non consentito) appare quando si esegue lo script?

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-150*Point,Bid+150*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

Tranne che non deve funzionare affatto. È necessario controllare la validità degli stop e dei take size da parte della vostra società di brokeraggio

ERR_TRADE_NOT_ALLOWED 4109 Il commercio non è permesso. Devi abilitare l'opzione "Consenti all'EA di commerciare" nelle proprietà dell'EA.
 
artmedia70:

Solo che non funziona necessariamente. Dobbiamo controllare le misure di stop e take per vedere se sono permesse dal cronometro della vostra società di intermediazione

ERR_TRADE_NOT_ALLOWED 4109 Il commercio non è permesso. Dovresti abilitare l'opzione "Consenti all'EA di commerciare" nelle proprietà dell'EA.

Grazie mille!

Necessario per permettere all'EA di commerciare)

 

Buona giornata a tutti.

Mi scuso se questa domanda è stata sollevata prima, ma devo scorrere 540 pagine.

Questo è il problema. In MT4, gli ordini con lo stesso prezzo si sovrappongono e solo un ordine è visibile. Ci sono delle impostazioni in MT4 in modo che, per esempio, due ordini sul grafico siano visualizzati uno accanto all'altro senza sovrapporsi. Se non ci sono tali impostazioni, è possibile creare una tabella o un grafico con tale funzione?

 
pyrsikov:

Buona giornata a tutti.

Mi scuso se questo è stato sollevato prima, ma sono 540 pagine.

Ecco il problema. In MT4, gli ordini con lo stesso prezzo si sovrappongono e solo un ordine è visibile. Ci sono delle impostazioni in MT4 in modo che, per esempio, due ordini su un grafico siano visualizzati uno accanto all'altro senza sovrapporsi. Se non ci sono tali impostazioni, è possibile creare una tabella o un grafico con tale funzione?

Ctrl+t e una tabella di tutte le posizioni aperte appare in basso se si passa alla scheda "Trade".
 

Per favore aiutatemi - sto scrivendo un EA - ho usato il codice come substrato;

se(drawBacker){
for(int x=0;x<7;x++)
for(int y=0;y<29;y++)
{
ObjectCreate("A_Fon "+x+y,OBJ_LABEL,0,0,0,0);
ObjectSet("A_Fon "+x+y, OBJPROP_CORNER, positionWindow); // positionWindow // Txt_Location
ObjectSet("A_Fon "+x+y,OBJPROP_XDISTANCE,x*20+5);
ObjectSet("A_Fon "+x+y,OBJPROP_YDISTANCE,y*20+9);
ObjectSetText("A_Fon "+x+y,CharToStr(110),26, "Wingdings",colorSubstrate);//Red);
}
se (drawWingdings==False)
{
for( int posp=1000;posp>0;posp--)
{
ObjectDelete("A_Fon "+posp);
ObjectDelete("A_Fon0"+pospp);
ObjectDelete("A_Fon00");
}
}
}

Come risultato, ho un casino, dato che un numero enorme di oggetti sono disegnati sul grafico.

Per favore ditemi il codice normale per impostare lo sfondo del testo.

 
7777877:

Buon pomeriggio... Domanda sulle funzioni FileIsEnding e FileIsLineEnding. Per capire come funzionano le funzioni FileIsEnding e FileIsLineEnding, ho scritto il seguente script:

Dopo che un numero è stato scritto nel file, se si guarda in forma esadecimale, ci sarà la seguente voce

00000000: 31 2E 33 35 38 34 0D 0A | | 1.3584...

Ogni lettera o numero prende 1 byte o 8 bit, gli ultimi due caratteri sono chiamati line feed e carriage return, sono aggiunti automaticamente così la dimensione del file è di 8 byte non 6.

Esegui il tuo script leggermente modificato e nota come il cursore si muove (deliberatamente ho fatto l'enumerazione più grande della dimensione del file, così puoi vedere dove si verifica l'errore.

int start()                                                              //функция start
  {                                                                      //начало start
   double Timestart=GetTickCount();                                      //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   string name="Копия Запись чисел в файл.csv";                          //имя создаваемого файла
   bool h;                                                               //переменная: значение функции FileIsEnding
   bool h_l;                                                             //переменная: значение функции FileIsLineEnding
   int error;                                                            //переменная: ошибка
   int handle=FileOpen(name,FILE_CSV|FILE_WRITE,';');                    //открываем заданный файл n записываем туда данные
   int запись=FileWrite(handle,DoubleToStr(1.3584,4));                   //записываем цены OHLC в файл csv (в преобразованном виде, т.е в виде текста)
   FileClose(handle);                                                    //закрываем файл
//---------------------------------------------------------------------------------------- 2 -
   handle=FileOpen(name,FILE_CSV|FILE_READ,';');                         //открываем заданный файл
   int size=FileSize(handle);                                            //вычисляем размер заданного файла
   Print("Размер файла ",name," составил ",size," байт");
   for(int i=0;i<=size;i++)
   {
   GetLastError();
   bool pos=FileSeek(handle,i,SEEK_SET);                                 //смещаем от начала вправо указатель файла
   int pos1=FileTell(handle);
   double чтение=FileReadNumber(handle);                                 //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателя
   h=FileIsEnding(handle);                                               //устанавливаем текущее значение переменной h
   h_l=FileIsLineEnding(handle);                                         //устанавливаем текущее значение переменной h_l
   error=GetLastError();                                                 //значение ошибки, производимой функцией FileIsEnding
   if(error!=0)Alert("Текущая ошибка ",error);                           //если код текущей ошибки не равен 0, то получаем номер текущей ошибки
//----------------------------------------------------------------------------------------- 3 -
   Print(" Функция FileSeek вернула: ",pos,
         " Указатель находится в позиции - ",pos1,
           " Функция FileReadNumber(handle) вернула: ",чтение);//печать сообщения 
   }
   FileClose(handle);                                                    //закрываем файл
//----------------------------------------------------------------------------------------- 4 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -
 

Quando si esegue il debug dell'indicatore, è necessario stampare un array di valori di prezzo e tempo da certe barre sullo shifft.

      price1 = iMA(Symbol(),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack1+i);       // Цена в точке А
      price2 = iMA(Symbol(),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack2+i);       // Цена в точке В
      time1 = iTime(Symbol(),Period(),i_shiftBarsBack1 + i - 1);                                               // Время в точке А
      time2 = iTime(Symbol(),Period(),i_shiftBarsBack2 + i - 1);                                               // Время в точке В

Ho tutto questo all'interno dell'operatore, ovviamente:

for(i = limit - 1;i > 0;i--)

Poi, trasferisco i valori di prezzo e tempo in array per lavorarci ulteriormente:

      varsPrice1[i] = price1;                                                                        // Массив цен в точке А
      varsPrice2[i] = price2;                                                                        // Массив цен в точке В
      varsTime1[i] = time1;                                                                          // Массив времени в точке А
      varsTime2[i] = time2;                                                                          // Массив времени в точке В

Cerco di stampare quello che ho già subito dopo:

      Print("i = ", i," time1 = ", time1, " price1 = ", price1);
      Print("i = ", i," time2 = ", time2, " price2 = ", price2);
      Print("i = ", i," varsTime1[i] = ", varsTime1[i], " varsPrice1[i] = ", varsPrice1[i]);
      Print("i = ", i," varsTime2[i] = ", varsTime2[i], " varsPrice2[i] = ", varsPrice2[i]);

Questo è ciò che viene stampato nel registro degli esperti:

2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 41 varsTime1[i] = 1281381900 varsPrice1[i] = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 41 time2 = 1281382200 price2 = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 41 time1 = 1281381900 price1 = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 42 varsAngle[i] = 0
2012.10.20 14:47:13     2010.08.10 02:58  AngleByTg GBPUSD,M5: i = 42 varsTime2[i] = 1281381900 varsPrice2[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 varsTime2[i] = 1281381000 varsPrice2[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 varsTime1[i] = 1281380700 varsPrice1[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 time2 = 1281381000 price2 = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 45 time1 = 1281380700 price1 = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 varsAngle[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 varsTime2[i] = 1281380700 varsPrice2[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 varsTime1[i] = 1281380400 varsPrice1[i] = 0
2012.10.20 14:47:12     2010.08.10 02:56  AngleByTg GBPUSD,M5: i = 46 time2 = 1281380700 price2 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 91 time1 = 1281366600 price1 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 varsAngle[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 varsTime2[i] = 1281366600 varsPrice2[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 varsTime1[i] = 1281366300 varsPrice1[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 time2 = 1281366600 price2 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 92 time1 = 1281366300 price1 = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 93 varsAngle[i] = 0
2012.10.20 14:47:11     2010.08.10 02:54  AngleByTg GBPUSD,M5: i = 93 varsTime2[i] = 1281366300 varsPrice2[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 varsAngle[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 varsTime2[i] = 1281380700 varsPrice2[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 varsTime1[i] = 1281380400 varsPrice1[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 time2 = 1281380700 price2 = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 45 time1 = 1281380400 price1 = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 46 varsAngle[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 46 varsTime2[i] = 1281380400 varsPrice2[i] = 0
2012.10.20 14:47:10     2010.08.10 02:52  AngleByTg GBPUSD,M5: i = 46 varsTime1[i] = 1281380100 varsPrice1[i] = 0
2012.10.20 14:47:09     2010.08.10 02:50  AngleByTg GBPUSD,M5: i = 49 varsTime1[i] = 1281379200 varsPrice1[i] = 0

Qui possiamo vedere chiaramente che i valori dei prezzi di entrambi varsTime1[i] evarsTime2[i] e solo i prezzi di time1 etime2 sono sempre 0. Cosa c'è di sbagliato in questo?

 
Vinin:

Dovresti darci l'intero codice. Non volete indovinare ciò che vi è chiaro.

Capisco che non voglio pensarci su, ma puoi almeno darmi un suggerimento se il problema ti è chiaro?
 
Ciao utenti del forum!!!!
Ragazzi, ho una domanda - chi sa in quale file sono memorizzati gli script assegnati ai "tasti di scelta rapida"? Voglio salvare questo file con i nominati già "Hotkeys" che ogni volta dopo la reinstallazione del terminale se improvvisamente c'è una tale necessità, non assegnare questi tasti di nuovo ... ma solo file copiato e tutti ...
Grazie a tutti in anticipo.
 
hoz:

Quando si esegue il debug dell'indicatore, è necessario stampare un array di valori di prezzo e tempo da certe barre sullo shifft.

Ho tutto questo all'interno dell'operatore, ovviamente:

Poi, trasferisco i valori di prezzo e tempo in array per lavorarci ulteriormente:

Cerco di stampare quello che ho già subito dopo:

Questo è ciò che viene stampato nel registro degli esperti:

Qui possiamo vedere chiaramente che i valori dei prezzi di entrambi varsTime1[i] evarsTime2[i] e solo i prezzi di time1 etime2 sono sempre 0. Cosa c'è che non va?


i_maTF == Periodo()??????,

i_maPeriod prende un valore ragionevole???

Beh, forse c'è qualcosa di sbagliato in i_maShiftByPrice?

È difficile essere più precisi.