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

 
Valdemar:


Спасибо за Ваш отзыв уважаемый PapaYozh,но я ведь и в int start() вставлял данную функцию,от этого всёровно не меняется итог компилятора.

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

Вольдемар, народ пытается до Вас донести то, что во всех доках, учебниках и примерах отражено: тело пользовательской функции должно находиться ВНЕ других функций, например, после последней строчки функции Старт.
 
ilunga:

еще раз:

Документация:

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

у вас десятый параметр в строке "Newest" - числом не является. Потому и ошибка

Тоесть просто нужно его убрать?
 
Pyxlik2009:
Тоесть просто нужно его убрать?

Нужно в вызывемую функцию параметры правильно передавать.
 

Парни помогите пожалуйста

 
granit77:
Вольдемар, народ пытается до Вас донести то, что во всех доках, учебниках и примерах отражено: тело пользовательской функции должно находиться ВНЕ других функций, например, после последней строчки функции Старт.


Благодарю Вас granit77 и Всех,кто уделил для меня своего драгоценного времени.У меня всё получилось,ведь я думаю каждый человек ликовал от появления первых успехов в достижении задуманной цели.

Спасибо!!!!

...надеюсь что и я в скором будущем смогу кому-нибудь здесь помочь.



 
Pyxlik2009:

Парни помогите пожалуйста

Вам подержать? :))))

Замените "Newest" числом.

 
Starting:


Мне кажется, я не совсем донес сути задачи.

Утверждение 1. Любой код, после того, как сработал отложенник, при обращении к дате открытия этого ордера (ставшего рыночным в момент сработки), получит дату открытия равной дате установки отложенника - так работает функция OrderOpenTime().

Утверждение 2. Без эксперта, постоянно отслеживающего состояние ордеров на счету, запомнить точное время сработки отложенника не получится.


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

Это будет более или менее точное время, но есть большой минус: спред. Т.к. спред в истории не пишется (я не беру здесь вариант тиковой истории со спредом от Дукас, например, т.к. сейчас торгую не на Дукас и ее, такую историю со спредом, нужно писать и накапливать), может, ордер сработал гораздо раньше, когда цена почти касалась уровня открытия, но его не пересекала, а за счет расширенного спреда ордер был открыт уже тогда, а не позже, когда видим фактическое пересечение ценой линии постановки отложенника.


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


Функции, те, на кот. Вы дали ссылку, обращаются к функции OrderOpenTime(). Для отложенников сработавших это будет дата их постановки, а не сработки. Поэтому функции имеющиеся не подходят. И скомпоновать их тоже никак, т.к. все равно они обращаются за датой открытия ордера к OrderOpenTime().


Что-то меня настораживает в ваших утверждениях. После преобразования отложенного ордера с тикетом, например, 12, в истории не будет отложенного ордера с тикетом 12. Будет открытая позиция с тикетом 12 и её тип будет уже OP_BUY или OP_SELL. Время её открытия и есть время преобразования отложенного ордера в рыночный.

Поправьте, если сиё не так...

Т.е. нужен в любом случае советник, который будет вести за вас учёт ордеров. На каждом тике проверяете наличие отложенного ордера, запоминаете его тикет (если ордерочек нашёлся) и далее сравниваете тикеты открытых позиций с тикетом отложенного. Как только найдёте совпадение - запоминаете время его открытия. Оно и будет вашим искомым...

 

Такой вопрос - можно ли использовать скрипты и сторонние советники (из серии "сами не торгуют") на сове, которую прогоняешь через тестер?

 
artmedia70:

Вам подержать? :))))

Замените "Newest" числом.

Уже доперло работат спасибо )
 
artmedia70:

Что-то меня настораживает в ваших утверждениях. После преобразования отложенного ордера с тикетом, например, 12, в истории не будет отложенного ордера с тикетом 12. Будет открытая позиция с тикетом 12 и её тип будет уже OP_BUY или OP_SELL. Время её открытия и есть время преобразования отложенного ордера в рыночный.

Поправьте, если сиё не так...

Т.е. нужен в любом случае советник, который будет вести за вас учёт ордеров. На каждом тике проверяете наличие отложенного ордера, запоминаете его тикет (если ордерочек нашёлся) и далее сравниваете тикеты открытых позиций с тикетом отложенного. Как только найдёте совпадение - запоминаете время его открытия. Оно и будет вашим искомым...

Да, тикет у рыночного ордера после сработки отложенника не поменялся (по кр. мере у моего брокера).

Время открытия рыночной позиции и будет временем преобразования отложенника - по кр. мере по логам сравнил сейчас, на примере одного из ордеров.

Утверждение 1, исходя из этого, очевидно не верно. Завтра на свежую голову все еще раз перепроверю, а то пару ночей корпел (не именно с этим), мозг уже затуманился.

Если OrderOpenTime() у рыночного, бывшего отложенным, все-таки выдает время его открытия, то проблем вообще нет, и эксперт не нужен для отслеживания ордеров. Все что было нужно - просто время сработки отложенного, чтобы правильно сортировать ордера из истории по времени их открытия и флагу, что они закрыты. И даже не важно, что в истории будет просто рыночный, бывший отложенным, по которому не будет никаких флагов, что он был отложенником - это и не требуется. Важен сам факт - закрыт последним и с самой свежей датой открытия - наш клиент, сюда его.

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