АвторСообщение
Anatoliy



Сообщение: 2
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 21.07.14 21:22. Заголовок: Я новичок.


Пишу пользовательский индикатор на основе пересечение уровни 20 и 80. Если главная линия Stochastic пересекла уровень 80 (сверху - вниз), то выводит стрелка Sell на ценовых графиках, а если главная линия Stochastic пересекла уровень 20 (снизу - верх), то стрелка Buy на ценовых графиках.

#property strict
#property indicator_chart_window
#property indicator_buffers 2
//--- plot Buy
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot Sell
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrRed
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- input parameters

//--- indicator buffers
double BuyBuffer[];
double SellBuffer[];
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int init()
{
//---
SetIndexBuffer(0,BuyBuffer);
SetIndexArrow(0,233);
SetIndexStyle(0,DRAW_ARROW);
//---
SetIndexBuffer(1,SellBuffer);
SetIndexArrow(1,234);
SetIndexStyle(1,DRAW_ARROW);
//---
SetIndexEmptyValue(0,80.0);
SetIndexEmptyValue(1,20.0);
//---
return(0);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция пользовательского индикатора итерации |
//+------------------------------------------------------------------+
int start()
{
//---
int i, Counted_bars;

double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); // бар 1
double mainStoc_2 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,2); // бар 2

Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1;

for(i=0;i>=0;i--)
{
if (mainStoc_2 > 80.0 && mainStoc_1 < 80.0)
SellBuffer = Low-5*Point;
else
SellBuffer = 0.0;

if (mainStoc_2 < 20.0 && mainStoc_1 > 20.0)
BuyBuffer = High+5*Point;
else
BuyBuffer = 0.0;
}
//---
return(0);
}

И в результатах индикатор вообще не работает.
Как его исправит?



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]


Balbesik



Сообщение: 130
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.11.14 21:43. Заголовок: Scriptong пишет: Фа..


Scriptong пишет:

 цитата:
Файл почему-то удален с сервера. Хотя неделя то еще не прошла, чтобы последовало автоматическое удаление.



Не знаю, мне дали 2 дня.
Сейчас повторю и опишу.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 927
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 06.11.14 21:54. Заголовок: Balbesik пишет: Не ..


Balbesik пишет:

 цитата:
Не знаю, мне дали 2 дня.
Сейчас повторю и опишу.


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

Спасибо: 0 
Профиль
Balbesik



Сообщение: 132
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.11.14 22:21. Заголовок: Scriptong пишет: Вс..


Scriptong пишет:

 цитата:
Все-таки непонятно, что за скрипт. Хотя ясно, что таким образом ты переписываешь данные с нестандартного графика в csv-файл для последующего импорта через Архив котировок.



int start()
{
int h=FileOpen(Symbol()+(string)Period()+"v1"+".csv",FILE_WRITE|FILE_ANSI|FILE_SHARE_WRITE|FILE_CSV,",");

int i_Time=(int)Time[0];

for(int i=0;i<Bars-1;i++) //
{

FileWrite((int)h,TimeToStr(i_Time,TIME_DATE),TimeToStr(i_Time,TIME_MINUTES),Open,High,Low,Close,Volume);

i_Time-=60;

}

FileClose((int)h);

return(0);

}

Я его чуть переделал под себя - наверху есть картинка, где исходный код (509 билд) и эта переделка.

Scriptong пишет:

 цитата:
Ты писал, что вся история в терминале удалена. После этого была закачана минутная история. Каким образом будет сформирован график М5, если терминал отключен от интернета? На мой взгляд, здесь и кроется ошибка.



Да это просто переключение - график 5 мин и не нужен.
Вся эта "свистопляска" на 745 билде, т.к. на 625 билде закачивает нормально,
предполагаю, что импорт не работает на 745.
Хотя я мог некорректно править скрипт, хотя 509 тоже закачивается нормально.
Обратная установка 745 не портит закаченную историю - 625.
Проверил на другом компе, другой участок истории на 745 в сравнении с экселем - ерунду 745 показывает при импорте.
Коротко или импорт не работает на 745 или написание скрипта не соответствует новым правилам.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 131
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.11.14 21:53. Заголовок: Сейчас дали 7 дней. ..


Сейчас дали 7 дней.
http://dropmefiles.com/xJAzC
индикатор

Спасибо: 0 
Профиль
Scriptong





Сообщение: 928
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 06.11.14 22:05. Заголовок: Balbesik пишет: Сей..


Balbesik пишет:

 цитата:
Сейчас дали 7 дней.
http://dropmefiles.com/xJAzC
индикатор


Ну да. Это обычный synbar, немного переделанный на новый лад (под новый MQL4), хотя и не досконально переделанный.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 133
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.11.14 22:28. Заголовок: Scriptong пишет: Ну..


Scriptong пишет:

 цитата:
Ну да. Это обычный synbar, немного переделанный на новый лад (под новый MQL4), хотя и не досконально переделанный.



"...переделан (прошу не смеяться) под новые билды ..." -
в качестве обучения, если это недолго, как он должен быть поправь пожалуйста.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 930
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 07.11.14 21:09. Заголовок: Скрипт для сохранени..


Скрипт для сохранения данных с графика в csv-файл не нужен. Существует штатный способ: активировать нужный график, меню Файл - Сохранить как.

Balbesik пишет:

 цитата:
в качестве обучения, если это недолго, как он должен быть поправь пожалуйста.


По сути все переделано верно. Особо то и придраться не к чему. Просто резануло глаз использование класса класса памяти extern, а не input, а также возврат из функции OnInit значения -1, а не INIT_FAILED. Вот в принципе и все, т. е. косметика, не меняющая сути.



Спасибо: 0 
Профиль
Balbesik



Сообщение: 134
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 07.11.14 22:13. Заголовок: Scriptong пишет: По..


Scriptong пишет:

 цитата:
По сути все переделано верно. Особо то и придраться не к чему. Просто резануло глаз использование класса класса памяти extern, а не input, а также возврат из функции OnInit значения -1, а не INIT_FAILED. Вот в принципе и все, т. е. косметика, не меняющая сути.



Спасибо, Игорь!

Scriptong пишет:

 цитата:
Скрипт для сохранения данных с графика в csv-файл не нужен. Существует штатный способ: активировать нужный график, меню Файл - Сохранить как.



Мне нужен.
"Равновысокие бары" как таковые не имеют время.
Тестер - как бы "привязывает" время - этот момент "обхожу" скриптом.
Две картинки - 625 билд (иногда врет - но не так как 745,
на 745 - даже "скрипт - переделка" не работает)
Файл - "Сохранен как"


и скриптом.



Спасибо: 0 
Профиль
Scriptong





Сообщение: 937
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 09.11.14 16:50. Заголовок: Balbesik пишет: Мне..


Balbesik пишет:

 цитата:
Мне нужен.
"Равновысокие бары" как таковые не имеют время.
Тестер - как бы "привязывает" время - этот момент "обхожу" скриптом.


Да, действительно. Ведь если на графике несколько баров с одинаковым временем формирования, то при импорте CSV-файла они считаются за повторяющиеся, и во внимание принимается только один из них.
Тогда немного поправь скрипт, чтобы последовательность баров была правильной - от большего к меньшему по индексу, несмотря на то, что это не влияет на операцию импорта:


 цитата:
void OnStart()
{
int h = FileOpen(Symbol()+(string)Period()+"v1"+".csv",FILE_WRITE|FILE_ANSI|FILE_SHARE_WRITE|FILE_CSV,",");
if (h == INVALID_HANDLE)
{
Alert("Ошибка создания файла №", GetLastError());
return;
}

datetime time = Time[0] - (Bars - 1) * 60;
for (int i = Bars - 1; i >= 0; i--, time += 60)
FileWrite(h, TimeToStr(time, TIME_DATE), TimeToStr(time, TIME_MINUTES), DoubleToString(Open[ i ], _Digits),
DoubleToString(High[ i ], _Digits), DoubleToString(Low[ i ], _Digits), DoubleToString(Close[ i ], _Digits), Volume[ i ]);

FileClose(h);

}



Спасибо: 0 
Профиль
Balbesik



Сообщение: 135
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 10.11.14 13:55. Заголовок: Scriptong пишет: То..


Scriptong пишет:

 цитата:
Тогда немного поправь скрипт, чтобы последовательность баров была правильной...



Спасибо, Игорь!
Появляется инструмент для работы, т.к.
без соответствия реальному графику это было бессмысленно.


Спасибо: 0 
Профиль
Anatoliy



Сообщение: 27
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 09.11.14 17:45. Заголовок: Добрый суток, Игорь...


Добрый суток, Игорь.

Как получить свойства позиции???
Открытая сделка, например: магический номер, символ, комментарий, своп, комиссия, текущая цена, цена открытая сделка, прибыль/убыток, объём, Stop Loss, Take Profit, время открытия, идентификатор и тип позиции.

У MQL5 есть спец. функции PositionGetString(), PositionGetInteger(), PositionGetDouble(), а в MQL4 нет, т.е. самим написать? Как?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 938
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 09.11.14 18:24. Заголовок: Добрый день, Anatoli..


Добрый день, Anatoliy.

Anatoliy пишет:

 цитата:
Как получить свойства позиции???


В MT4 и MT5 разная терминология. У МТ4 - ордера (рыночные и отложенные), у МТ5 - позиции (эквивалент рыночных ордеров МТ4) и ордера (эквивалент отложенных ордеров МТ4).
В МТ4 параметры ордера можно получить одинаковым способом для рыночного и отложенного ордера. Для этого ордер сначала выбирается (OrderSelect), а потом вызываются нужные функции для запроса конкретных параметров: OrderProfit, OrderSwap, OrderStopLoss и т. д (см. здесь).

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 28
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 09.11.14 20:03. Заголовок: Функция OrderSelect(..


Функция OrderSelect() имеет три параметры, два последняя параметра понятна, а первый параметр ticket откуда мне знать какой-то номер тикета или порядковый номер ордера в списке?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 939
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 09.11.14 22:50. Заголовок: Anatoliy пишет: а п..


Anatoliy пишет:

 цитата:
а первый параметр ticket откуда мне знать какой-то номер тикета или порядковый номер ордера в списке?


Когда тикет неизвестен, используется перебор всего списка ордеров:

 цитата:
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS))
continue;
// критерии выбора ордера
}


или:

 цитата:
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HYSTORY))
continue;
// критерии выбора ордера
}



Критерии выбора ордера бывают разные. Например, нас могут интересовать все ордера по текущему символу. В этом случае используем условие OrderSymbol() == Symbol(). Или, что чаще, нужны ордера с некоторым MAgic Number, который используется нашим советником для дальнейшего опознания своих ордеров. Тогда нужно условие OrderMagicNumber() == magicNumber.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 136
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 11.11.14 18:34. Заголовок: Здравствуй, Игорь! П..


Здравствуй, Игорь!
Пара-тройка вопросов?
1. Так или иначе ты «вник» в синбар (равновысокий).
Правильно ли я понимаю,
что «отсечка» по времени у равновысокого бара идет,
в отличии от «штатного» по Closе?
2. У тебя была ссылка на тему – «Вписать индикатор в советник».
Найти не могу, все статьи пересмотрел – подскажи, пожалуйста.
Хочу попробовать (проблема памяти).
3. Можешь ли МТ4 связать с МТ5 – котировки, их контроль и прочь.
Это отдельно в почте, если возможно, то сориентируешь по работе.


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет