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

 
smart:


Как можно узнать какие индикаторы состоят в шаблоне? Поставил старый шаблон, но отображаются не все индикаторы. Забыл названия индикаторов входящих в шаблон. Спасибо!


открываете папку \templates\, ищите свой шаблон, открываете его в блокноте, ищите таг <windows> и смотрите какие индикаторы с какими параметры забиты.
 
tol64:

demlin20.06.2011 22:02

Всем общий привет!

Такой вопрос, че то никак не могу заставить программу определить прибыль ордера в пунктах. Помогите кто-нить

Перебираете в цикле все ордера.

for(i = 0; i < OrderHistoryTotal(); i++)

Выбираете тот, который нужен Вам по определённым критериям используя OrderSelect(). Затем запрашиваете прибыль OrderProfit(). Это чистая в деньгах. А в пунктах нужно так примерно:

(OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots();

Проверьте только на всякий случай.)))

Спасибо, буду пробовать
 

Запись и чтение инфо из комментария ордера. OrderComment().

При открытии ордера записываю в комментарий баланс и уровень Stop Loss. При открытии ордера смотрю в журнал. Всё точно.




Баланс 10000.00. Stop Loss 1.67740. Общее количество знаков 15.
Потом с помощью строковых функций выбираю нужные символы и записываю в файл csv. Но столкнулся с такой проблемой. Если сработал стоп-лосс, в конец комментария добавляются эти символы [sl].


И кол-во знаков уже не 15, а 19. Дело в том, что перед записью я проверяю сколько знаков в текущем балансе и сколько знаков в цене. Это присваивается переменным с помощью, которых я затем определяю сколько и от какого знака мне нужно взять. А вот этот [sl] мешает мне при этом. Ведь, если в цене 7 знаков, то в файл записывается не 1.67740, а 740. Не могу понять, как решить задачу.)) Прошу помочь.
 
Проще всего, это писать в коммент сразу правильно. То есть ставить разделители между данными. Тогда длина строки не будет иметь значения, просто выдернете подстроки между разделителями.
 
granit77:
Проще всего, это писать в коммент сразу правильно. То есть ставить разделители между данными. Тогда длина строки не будет иметь значения, просто выдернете подстроки между разделителями.


Мне чуть раньше предложили вот такой простой вариант:

string comment = OrderComment();
comment = StringSubstr(comment, 0, 15); // обрезали справа

Вариант простой, но у меня с этим тоже сложности возникли, но решил. )

А что, если всё сразу правильно записывать, разве символы [sl] не будут добавляться? Можно небольшой пример с извлечением подстроки из коммента ордера, если Вас не затруднит?

 
tol64:


Мне чуть раньше предложили вот такой простой вариант:

Вариант простой, но у меня с этим тоже сложности возникли, но решил. )

А что, если всё сразу правильно записывать, разве символы [sl] не будут добавляться? Можно небольшой пример с извлечением подстроки из коммента ордера, если Вас не затруднит?

Да нехай себе добавляются. Вы же хотите извлечь свои данные, а что там дописано и какой длины строка, Вас не должно волновать.

   string _comment="10000.00"+"$"+"1.67740"+"#";//строка комментария. "$","#" - разделители (символы,какие понравятся) 
   int lenstring=StringLen(_comment);           //длина строки _comment
   int delim1,delim2;                           //позиции разделителей в строке _comment
   string balans,stoploss;                      //извлекаемые подстроки
   delim1=StringFind( _comment, "$", 0);        //определяем позиции разделителей в строке _comment
   delim2=StringFind( _comment, "#", 0);        //определяем позиции разделителей в строке _comment 
   balans   =  StringSubstr( _comment,0, delim1);                //извлекли строку баланс
   stoploss =  StringSubstr( _comment,delim1+1, delim2-delim1-1);//извлекли строку стоплосс 
   Comment("|",balans,"|",stoploss,"|");//проверка 
 
Доброго всем времени суток. Столкнулся с забавной ситуацией, когда два разных компьютера могут подключиться к одному аккаунту и даже торговать одновременно на этом аккаунте. Кто подскажет, можно ли управлять удаленным компьютером, например менять переменные ext или хотя бы приостановить работу советника? Заранее благодарен, потому что столкнулся с довольно странной ситуацией, когда не могу перехватить управление у терминала работающего дома (сам я на работе к примеру).
 
granit77:
Да нехай себе добавляются. Вы же хотите извлечь свои данные, а что там дописано и какой длины строка, Вас не должно волновать.


)) Спасибо. Отличный пример! Всё понятно с полуслова. Вот именно таких примеров иногда очень не хватает.
 
snail09:

Да уж, точно кипит. Все только на Ваши ... вопросы отвечают. Может Вы Специально такой инакосообразительный?

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


Я не волшебник, я сам здесь впервой. 8))))
 
peshihod:

Вам не хватает практики. Невозможно запустить Вашу программу, она не работает. Замкнутый круг: нет рабочего варианта-> нет умения-> нет рабочего варианта.

Надо подумать.... :-/


В продолжение темы.

Чтобы научиться, нужна практика.

Сделайте следующее в торговом терминале:
1.Должен быть открыт учебный счет.
Данные счета занести в торговый терминал: Файл->Логин->...
2.Использовать открытый график или открыть новый:Файл->Новый_график->...
3.Установить максимум в: Сервис->Настройки->Графики->Макс.баров_истории->250000
4.Установить минутный таймфрейм: Графики->Период->M1_Одна_минута
5.Сделать обновление: Графики->Обновление
6.Открыть тестер стратегий: Вид->Тестер_стратегий
Все прочие окна закрыть(свернуть), оставить одно окно с графиком и окно с тестером.
------------------
Далее в тестере в настройках:
7.Символ: Выбираем тот символ, график которого открыт.
8.Модель:По ценам открытия(.....)
<<<Эту модель использовать до тех пор пока нет в программе функции OrderSend().>>>
9.Использовать дату: поставить галочку.
Дата: _От:<Вчерашний день(кроме сбб и вск)>, _до:Сегодня
10.Визуализация: убрать галочку если есть.
11.Период: M1
12.Оптимизация: убрать галочку если есть.
---------------------
Дальше открыть MetaEditor:
13.В торговом терминале в меню:Сервис->Редактор_MetaQuotes_Language
14.Пишем программу, например:
//=====================

int i;
int const=5;
int Celoe, Ostatok;
bool flag_Odin_Raz=true;




int start()
{

if(flag_Odin_Raz==true)
{
//-------------
i=0;
while(i<22)
   {
   Celoe=i/const;
   Ostatok=MathMod(i,const);
   Print("При i=", i, " Celoe=", Celoe, " Ostatok=", Ostatok);
   i=i+1;
   }
//-------------
flag_Odin_Raz=false;
}
return(0);
}

//=============================

15.В MetaEditor в меню:Файл->Сохранить_как : задаем имя файла, сохраняем расширение .mq4, Папка должна быть 'experts'.
16.В MetaEditor в меню: Файл->Компилировать
---------------------------------------
Далее в тестере в настройках:
17.Советник: находим и выбираем имя файла программы.
18.Нажать кнопку 'Старт' кликом мышки.
19.В тестере->журнал
Видим результат работы программы по сообщениям Print()
-----------------------------------------
Для более удобного просмотра:
20. На любой строчке из журнала нажимаем правой кнопкой мыши->Открыть
При этом откроется папка logs с файлом типа *.log который можно открыть при помощи любого текстового редактора, Блокнот, Word и т.п.

PS
Если файл слишком велик и ни один текстовый редактор не может его открыть, тогда следует удалить этот файл средствами Windows, и запустить программу кнопкой 'Старт' из торгового терминала заново. Папка Тестера: "...\Каталог_Установки\tester\logs", не перепутать с другой: "...\Каталог_Установки\logs"

PPS
Чтобы научится программировать, нужен компилятор языка программирования, который превращает текстовое написание нужных действий "программу"( удобоваримую для человека), в язык машинных команд -- понятных компьютеру. Не имея практики невозможно научиться. Mql4 не создаёт отдельных программ, *.mq4 превращается в *.ex4, который запускается из програмной оболоки.
*.ex4 нельзя запускать напрямую, выше описанный алгоритм позволяет обойти этот момент.

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