[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 450

 
Pacman:

Я прошу прощения за дублирование вопроса, но я не могу выполнять следующие примеры пока не разберусь с этим.

Помогите пожалуйста разобраться.

Написал простой скрипт на открытие ордера (из учебника MQL4).

В данном примере код приведен для инструментов с 4-мя знаками.

У меня счет в компании у которой 5 знаков после точки.

Напишите пожалуйста как правильно переделать код для 5-ти знаков, и почему при запуске скрипта выдает ошибку 4109 (торговля не разрешена)?

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

Только вот вовсе необязательно, что это будет работать. Нужно размеры стопов и тейков проверять на допустимость по стоплевелу вашего ДЦ

ERR_TRADE_NOT_ALLOWED 4109 Торговля не разрешена. Необходимо включить опцию "Разрешить советнику торговать" в свойствах эксперта.
 
artmedia70:

Только вот вовсе необязательно, что это будет работать. Нужно размеры стопов и тейков проверять на допустимость по стоплевелу вашего ДЦ

ERR_TRADE_NOT_ALLOWED 4109 Торговля не разрешена. Необходимо включить опцию "Разрешить советнику торговать" в свойствах эксперта.

Большое спасибо!

Необходимо было разрешить советнику торговать)

 

Доброго времени суток всем.

Извиняйте. если вопрос поднимался ранее, но листать 540 стр.

Такая проблема. В МТ4 ордера с одинаковой ценой перекрываются, и виден только один ордер. Есть ли в МТ4 настройки, чтобы, допустим, два ордера на графике отображались рядом, не перекрывая друг друга. Если таких настроек нет, то можно ли создать таблицу либо график  с такой функцией?

 
pyrsikov:

Доброго времени суток всем.

Извиняйте. если вопрос поднимался ранее, но листать 540 стр.

Такая проблема. В МТ4 ордера с одинаковой ценой перекрываются, и виден только один ордер. Есть ли в МТ4 настройки, чтобы, допустим, два ордера на графике отображались рядом, не перекрывая друг друга. Если таких настроек нет, то можно ли создать таблицу либо график  с такой функцией?

Ctrl+t и внизу появляется таблица всех открытых поз, если переключиться на вкладку "Торговля".
 

Выручите пожалуйста - пишу советника - в качестве подложки использовал код;

 if (рисуемПодложку){
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,0);
ObjectSet("A_Fon"+x+y, OBJPROP_CORNER, позицияОкна); // позицияОкна // 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",цветПодложки);//Red);
}
if (рисуемПодложку==False)
{
for( int posp=1000;posp>0;posp--)
{
ObjectDelete("A_Fon"+posp);
ObjectDelete("A_Fon0"+posp);
ObjectDelete("A_Fon00");
}
}
}

 В результате получил геморой , так как отрисовывается огромное колличество объектов на графике.

Подскажите пожалуйста нормальный код для установки подложки под текст.                         

 
7777877:

Доброго времени суток... Вопрос по функциям FileIsEnding и FileIsLineEnding. Для того, чтобы понять как работают функции FileIsEnding и FileIsLineEnding я написал такой скрипт:

После записи числа в файл, если посмотрите в шестнадцатиричной форме, будет такая запись:

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

Каждая буква или цифра занимает 1 байт или 8 бит, последние два символа называются - перевод строки и возврат каретки, доплняются автоматически, поэтому размер файла 8 байт, а не 6.

Прогоните ваш немного измененный скрипт и заметьте как передвигается курсор (специально сделал перебор больше размера файла, чтобы вы увидели, где возникает ошибка.

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 -
 

Необходимо при отладке индикатора вывести через Print массив значений цен и времени, полученных от определённых баров  по шифту машки.

 

      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);                                               // Время в точке В

Всё это я получаю есс-но внутри оператора:

 

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

  Далее я загоняю значения цен и времени в массивы, чтобы с ними работать дальше:

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

 Пробую вывести на печать того, что уже есть сразу же после этого:

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

 На печать в журнал экспертов выводится вот что:

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

 Здесь явно видно, что значения цен как массива varsTime1[i] и varsTime2[i], так и просто цены полученной от машки time1 и time2 и  всегда 0. Что нет так?

 
Vinin:

Вы бы весь код привели. А то не хочется додумывать то, что для Вас ясно.

Понимаю что додумывать не хочется, но может хоть намекнете, если проблема Вам ясна?
 
Приветик жителям форума!!!!
Парни у меня вопрос - кто знает в каком файле сохраняются назначенные на скрипты "Горячие клавиши" ??? Хочу сохранить этот файлик с назначенными уже "Горячими клавишами" что бы каждый раз после переустановки терминала,если вдруг появляется такая необходимость, не назначать эти клавиши по-новой..., а только файлик перекинул и всё...
Заранее всех благодарю .
 
hoz:

Необходимо при отладке индикатора вывести через Print массив значений цен и времени, полученных от определённых баров  по шифту машки.

 

Всё это я получаю есс-но внутри оператора:

 

  Далее я загоняю значения цен и времени в массивы, чтобы с ними работать дальше:

 Пробую вывести на печать того, что уже есть сразу же после этого:

 На печать в журнал экспертов выводится вот что:

 Здесь явно видно, что значения цен как массива varsTime1[i] и varsTime2[i], так и просто цены полученной от машки time1 и time2 и  всегда 0. Что нет так?


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

i_maPeriod принимает разумное значение???

Ну может быть  с  i_maShiftByPrice что-нибудь не так???

Точнее трудно сказать. 

Причина обращения: