Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 509
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Народ подскажите робота.Который использует мартина.
К примеру открываю ордер, а робот продолжает работу...
Народ подскажите робота.Который использует мартина.
К примеру открываю ордер, а робот продолжает работу...
Здравствуйте. Разбираюсь с работой событий. У меня НЕ работает событие удаления объекта с графика (CHARTEVENT_OBJECT_DELETE). Удалял и мышкой и через Список объектов. Build 600.
Подскажите что не так?
код использую из справки
#define KEY_NUMPAD_5 12
#define KEY_LEFT 37
#define KEY_UP 38
#define KEY_RIGHT 39
#define KEY_DOWN 40
#define KEY_NUMLOCK_DOWN 98
#define KEY_NUMLOCK_LEFT 100
#define KEY_NUMLOCK_5 101
#define KEY_NUMLOCK_RIGHT 102
#define KEY_NUMLOCK_UP 104
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Print("Запущен эксперт с именем ",MQLInfoString(MQL_PROGRAM_NAME));
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, // идентификатор события
const long& lparam, // параметр события типа long
const double& dparam, // параметр события типа double
const string& sparam) // параметр события типа string
{
//--- нажатие левой кнопкой мышки на графике
if(id==CHARTEVENT_CLICK)
{
Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam);
}
//--- нажатие мышкой на графическом объекте
if(id==CHARTEVENT_OBJECT_CLICK)
{
Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'");
}
//--- нажатие кнопки на клавиатуре
if(id==CHARTEVENT_KEYDOWN)
{
switch(int(lparam))
{
case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break;
case KEY_LEFT: Print("Нажата KEY_LEFT"); break;
case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break;
case KEY_UP: Print("Нажата KEY_UP"); break;
case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break;
case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break;
case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break;
case KEY_DOWN: Print("Нажата KEY_DOWN"); break;
case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break;
case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break;
default: Print("Нажата какая-то неперечисленная клавиша");
}
ChartRedraw();
}
//--- удален объект
if(id==CHARTEVENT_OBJECT_DELETE)
{
Print("Удален объект с именем ",sparam);
}
//--- создан объект
if(id==CHARTEVENT_OBJECT_CREATE)
{
Print("Создан объект с именем ",sparam);
}
//--- перемещен объект или изменены координаты точек привязки
if(id==CHARTEVENT_OBJECT_DRAG)
{
Print("Изменение точек привязки объекта с именем ",sparam);
}
//--- изменен текст в поле ввода графического объекта Edit
if(id==CHARTEVENT_OBJECT_ENDEDIT)
{
Print("Изменен текст в объекте Edit ",sparam);
}
}
Уважаемые форумчане, помогите разобраться, i это текущая свеча, почему i-2 не хочет рисовать линию, тестер при прогоне останавливается.
Уважаемые форумчане, помогите разобраться, i это текущая свеча, почему i-2 не хочет рисовать линию, тестер при прогоне останавливается.
Если Вы пытаетесь построить линию на 2 свечи раньше от i-ой, тогда Вам необходимо прибавить 2, а не отнимать, т.к. нумерация свечей идет справа-налево, 0-текущий бар.
Если Вы пытаетесь построить линии на еще не существующем баре (-2), то индекс массива не может быть отрицательным. Для этого необходимо вычислить время нужного бара, например вот так Time[0]+2*(Time[0]-Time[1])
Если Вы пытаетесь построить линию на 2 свечи раньше от i-ой, тогда Вам необходимо прибавить 2, а не отнимать, т.к. нумерация свечей идет справа-налево, 0-текущий бар.
Если Вы пытаетесь построить линии на еще не существующем баре (-2), то индекс массива не может быть отрицательным. Для этого необходимо вычислить время нужного бара, например вот так Time[0]+2*(Time[0]-Time[1])
Большое спасибо, построить линию надо было на не существующем баре (-2)
Большое спасибо, построить линию надо было на не существующем баре (-2)
Зачем там еще цена. Ведь обьект строится по времени .
Большое спасибо, построить линию надо было на не существующем баре (-2)
Пожалуйста
Вот еще "красивое" решение
Time[0]+Period()*60*2 //60 переводим в секунды, 2 кол-во баров
Народ,помогите начать. Необходимо открыть ордер.
input int TakeProfit = 30;
input double StartLot = 0.01;
input double summ=false; //true, открываем позиции в обе стороны
input int Slippage = 30; // установим значение проскальзывания
void OnTick()
{
if(summ) { // открываем однупозицию, покупка.
OrderSend(
Symbol(),
OP_BUY,
StartLot,
NormalizeDouble(NormalizeDouble(Ask,_Digits),_Digits),
Slippage,
0,
TakeProfit,
WindowExpertName()+" "+(string)0,
0,
0,
clrBlue
);
}else{
OrderSend(
Symbol(),
OP_BUY,
StartLot,
NormalizeDouble(NormalizeDouble(Ask,_Digits),_Digits),
Slippage,
0,
TakeProfit,
WindowExpertName()+" "+(string)0,
0,
0,
clrBlue
);
OrderSend(
Symbol(),
OP_SELL,
StartLot,
NormalizeDouble(NormalizeDouble(Bid,_Digits),_Digits),
Slippage,
0,
TakeProfit,
WindowExpertName()+" "+(string)0,
0,
0,
clrBlue
);
}
}
Не получается, что неправильно?
Напишите код, который просто откроет позицию. Это все,что нужно...
Народ,помогите начать. Необходимо открыть ордер.
Не получается, что неправильно?
Напишите код, который просто откроет позицию. Это все,что нужно...
TakeProfit указан не верно в отправке ордера. Необходимо указать цену, а не кол-во нанопипов профита. Исправьте на Ask+TakeProfit*Point()
Ask, Bid не надо нормализовывать....
OrderSend(
Symbol(),
OP_BUY,
StartLot,
Ask,
Slippage,
0,
Ask+TakeProfit*Point(),
WindowExpertName()+" "+(string)0,
0,
0,
clrBlue
);