[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 448

 
Pacman:

Je m'excuse de répéter une question, mais je ne peux pas réaliser les exemples suivants tant que je n'ai pas résolu ce problème.

Aidez-moi à trouver une solution.

J'ai écrit un script simple pour ouvrir un ordre (à partir du tutoriel MQL4).

Je l'ai codé pour des instruments à 4 chiffres.

J'ai un compte dans une société qui a 5 chiffres après le point.

Pouvez-vous s'il vous plaît modifier le code pour 5 chiffres et pourquoi l'erreur 4109 (trading not allowed) apparaît lors de l'exécution du script ?

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

Sauf que ça n'a pas besoin de fonctionner du tout. Vous devez vérifier la validité des tailles de stop et de prise par votre société de courtage.

ERR_TRADE_NOT_ALLOWED 4109 Le commerce n'est pas autorisé. Vous devez activer l'option "Allow EA to trade" dans les propriétés de l'EA.
 
artmedia70:

Sauf que ça ne marche pas forcément. Nous devons vérifier les tailles d'arrêt et de prise pour voir si elles sont autorisées par le chronomètre de votre société de courtage.

ERR_TRADE_NOT_ALLOWED 4109 Le commerce n'est pas autorisé. Vous devez activer l'option "Allow EA to trade" dans les propriétés de l'EA.

Merci beaucoup !

Nécessaire pour permettre à l'EA de négocier)

 

Bonne journée à tous.

Je m'excuse si cette question a déjà été soulevée, mais il s'agit de 540 pages.

C'est là le problème. Dans MT4, les ordres ayant le même prix se chevauchent et un seul ordre est visible. Existe-t-il des paramètres dans MT4 pour que, par exemple, deux ordres sur le graphique soient affichés côte à côte sans se chevaucher. S'il n'existe pas de tels paramètres, est-il possible de créer un tableau ou un graphique avec une telle fonction ?

 
pyrsikov:

Bonne journée à tous.

Je m'excuse si cette question a déjà été soulevée, mais il s'agit de 540 pages.

Voici le problème. Dans MT4, les ordres ayant le même prix se chevauchent et un seul ordre est visible. Existe-t-il des paramètres dans MT4 pour que, par exemple, deux ordres sur un graphique soient affichés côte à côte sans se chevaucher. S'il n'existe pas de tels paramètres, est-il possible de créer un tableau ou un graphique avec une telle fonction ?

Ctrl+t et un tableau de toutes les positions ouvertes apparaît en bas si vous passez à l'onglet "Trade".
 

Aidez-moi, je suis en train d'écrire un EA. J'ai utilisé le code comme substrat ;

if(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) ;
}
si (drawWingdings==False)
{
for( int posp=1000;posp>0;posp--)
{
ObjectDelete("A_Fon "+posp) ;
ObjectDelete("A_Fon0"+pospp) ;
ObjectDelete("A_Fon00") ;
}
}
}

Le résultat est un véritable fouillis, car un grand nombre d'objets sont dessinés sur le graphique.

Veuillez m'indiquer le code normal pour définir l'arrière-plan du texte.

 
7777877:

Bon après-midi... Question sur les fonctions FileIsEnding et FileIsLineEnding. Afin de comprendre le fonctionnement des fonctions FileIsEnding et FileIsLineEnding, j'ai écrit le script suivant :

Après l'écriture d'un nombre dans le fichier, si vous regardez sous forme hexadécimale, vous trouverez l'entrée suivante

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

Chaque lettre ou chiffre prend 1 octet ou 8 bits, les deux derniers caractères sont appelés saut de ligne et retour chariot, ils sont ajoutés automatiquement de sorte que la taille du fichier est de 8 octets et non de 6.

Exécutez votre script légèrement modifié et remarquez comment le curseur se déplace (l'énumération est délibérément plus grande que la taille du fichier, afin que vous puissiez voir où l'erreur se produit.

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 -
 

Lors du débogage de l'indicateur, vous devez imprimer un tableau de valeurs de prix et de temps de certaines barres sur le 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);                                               // Время в точке В

Je reçois tout cela à l'intérieur de l'opérateur, bien sûr :

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

Ensuite, je transfère les valeurs de prix et de temps dans des tableaux afin de pouvoir les utiliser ultérieurement :

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

J'essaie d'imprimer ce que j'ai déjà immédiatement après :

      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]);

C'est ce qui est imprimé dans le journal des experts:

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

Ici, nous pouvons clairement voir que les valeurs de prix des deux varsTime1[i] etvarsTime2[i] et seulement les prix du temps1 et dutemps2 sont toujours 0. Qu'est-ce qu'il y a de mal à ça ?

 
Vinin:

Vous devriez nous donner le code entier. Vous ne voulez pas deviner ce qui est clair pour vous.

Je comprends que je ne veuille pas y réfléchir, mais pouvez-vous au moins me donner un indice si le problème est clair pour vous ?
 
Bonjour aux utilisateurs du forum !!!!
Les gars, j'ai une question - qui sait dans quel fichier sont stockés les scripts assignés aux "hotkeys" ? Je veux enregistrer ce fichier avec le nommé déjà "Hotkeys" que chaque fois après la réinstallation du terminal si tout à coup il ya un tel besoin, de ne pas affecter ces touches à nouveau ... mais seulement le fichier copié et tout ...
Merci d'avance à tous.
 
hoz:

Lors du débogage de l'indicateur, vous devez imprimer un tableau de valeurs de prix et de temps de certaines barres sur le shifft.

Je reçois tout cela à l'intérieur de l'opérateur, bien sûr :

Ensuite, je transfère les valeurs de prix et de temps dans des tableaux afin de pouvoir les utiliser ultérieurement :

J'essaie d'imprimer ce que j'ai déjà immédiatement après :

C'est ce qui est imprimé dans le journal des experts:

Ici, nous pouvons clairement voir que les valeurs de prix des deux varsTime1[i] etvarsTime2[i] et seulement les prix du temps1 et dutemps2 sont toujours 0. Qu'est-ce qu'il y a ?


i_maTF == Period()? ?????,

i_maPeriod prend une valeur raisonnable ???

Peut-être que quelque chose ne va pas avec i_maShiftByPrice ???

Il est difficile d'être plus précis.