Как кодировать? - страница 275

 
alvintran:
Нет, нет, это не проблема SL/TP, я знаю эту проблему, я сказал, что он ничего не делает, это означает, что на демо-счете (мгновенное исполнение или что-то еще, я не знаю) он работает нормально, но на реальном счете он не работает, не имеет никаких проблем, просто ничего не делает.

Этот советник мною написан, не куплен, не пробная версия, не какая-либо ограниченная.

Пожалуйста, помогите!

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

 
alvintran:
Нет, нет, это не проблема SL/TP, я знаю эту проблему, я сказал, что он ничего не делает, это означает, что на демо-счете (мгновенное исполнение или что-то еще, я не знаю) он работает нормально, но на реальном счете он не работает, не имеет никаких проблем, просто ничего не делает.

Этот советник написан мной, не куплен, не пробная версия, не ограничен.

Пожалуйста, помогите!

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

Будьте здоровы,

Grzesiek

 

Как получить 2-мерный массив в файл и затем вернуть его в другой массив в следующем советнике

Здравствуйте!

кто-нибудь может мне помочь и объяснить, как я могу получить 2-мерный массив (т.е. double array[x][y], где x=100, y=30) в файл, а затем как я могу вернуть числа из этого файла в массив в другом советнике? 1 измерение намного проще!!!

Я нашел эту статью: Трехмерные графики - профессиональный инструмент анализа рынка - Статьи MQL4, но я не знаю, как мне прочитать файл с числами из этого файла в моем втором советнике...

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

Не мог бы кто-нибудь помочь мне - я буду очень благодарен!

Спасибо!

 
g.pociejewski:
Хорошо, но выложите этот советник, я могу помочь вам, но мне нужен код.

Ваше здоровье,

Grzesiek

Кулак спасибо всем!

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

Я даю вам условие перед открытием позиции:

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))))) {

//Открываем ордер на покупку

}

Спасибо, Grzesiek! Я не могу поделиться этим советником, пожалуйста! Свяжитесь со мной по skype (duong_4sao) или yahoo (tieuthienma88), у нас будет дискуссия.

Надеюсь, вы сможете мне помочь. Спасибо!

 
alvintran:
Спасибо всем!

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

Я даю вам условие перед открытием позиции:

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))))) {

//Открываем ордер на покупку

}

Спасибо, Grzesiek! Я не могу поделиться этим советником, пожалуйста! Свяжитесь со мной по skype (duong_4sao) или yahoo (tieuthienma88), у нас будет дискуссия.

Надеюсь, вы сможете мне помочь. Спасибо!

Почему вы просите о помощи????

 

ECN брокеры и стоп-лосс

Я новичок в программировании на MQL. Пожалуйста, помогите мне.

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

оказалось, что ECN брокеры не поддерживают стоп-лосс с рыночными ордерами.

Я искал, и единственная информация, которую я нашел, это то, что нам нужно сначала иметь отложенный ордер, а затем модифицировать этот ордер.

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

Вот ордер на продажу для рыночного ордера :

STicket = OrderSend(Symbol(),OP_SELL,LotSize,Bid,0,0,0,null,MagicNumber,0,red);

Вот модификация ордера :

OrderSelect(SlTicket, SELECT_BY_TICKET);

OpenPrice = OrderOpenPrice();

{ double SellStopLoss = OpenPrice - (StopLoss * UsePoint);

bool TicketMod1 = OrderModify(SellTicket ,OrderOpenPrice() , SellStopLoss , 0,0);

}

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

Пожалуйста, помогите мне получить стоп-лосс ордер для ECN брокеров !!!!.

 
winston99:
Я новичок в программировании на MQL. Пожалуйста, помогите мне.

Я пытаюсь установить стоп-лосс с помощью рыночных ордеров. Какой лучший способ достичь этого. Я пробовал с помощью ordersend, но оказалось.

оказалось, что ECN брокеры не поддерживают стоп-лосс с рыночными ордерами.

Я искал, и единственная информация, которую я нашел, это то, что нам нужно сначала иметь отложенный ордер, а затем модифицировать этот ордер.

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

Вот ордер на продажу для рыночного ордера :

STicket = OrderSend(Symbol(),OP_SELL,LotSize,Bid,0,0,0,null,MagicNumber,0,red);

Вот модификация ордера :

OrderSelect(SlTicket, SELECT_BY_TICKET);

OpenPrice = OrderOpenPrice();

{ double SellStopLoss = OpenPrice - (StopLoss * UsePoint);

bool TicketMod1 = OrderModify(SellTicket ,OrderOpenPrice() , SellStopLoss , 0,0);

}

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

Пожалуйста, помогите мне получить ордер стоплосс для ECN брокеров !!!!.

Единственный способ добиться стоплосса в ECN брокерах - это отправить ордер без стопов и модифицировать его.

Я использую:

ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask+StopLoss*Point, StopLoss),sltpValue(Bid- TakeProfit*Point, TakeProfit),0);

и не имею никаких проблем (sltp дает нам значение Sl/TP).

 
g.pociejewski:
Единственный способ получить стоплосс в ECN брокерах - послать ордер без стопов и модифицировать его.

Я использую:

ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask+StopLoss*Point, StopLoss),sltpValue(Bid- TakeProfit*Point, TakeProfit),0);

и не иметь никаких проблем (sltp дает нам значение Sl/TP).

Как вы рассчитываете проскальзывание?

Я передаю 0 для этого, возможно, поэтому и возникает проблема.

 

помощь по зиг-загу

Здравствуйте,

Я пытаюсь написать ea, основанную на зигзаге и вилах.

Для построения вил мне нужна цена и время последних 4 зигзагов.

Я получаю цену с помощью ICustom()

но я не знаю, как получить время.

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

заранее спасибо

----------------------------------------------------------------------

это для цены...

int n0, n1, n2, n3, i0, i1, i2, i3 = 0;

double zig0, zig1, zig2, zig3;

while(n3<4)

{

zig3=iCustom(NULL, 0, "ZigZag", 0, i3);

if(zig3>0) n3+=1;

i3++;

}

while(n2<3)

{

zig2=iCustom(NULL, 0, "ZigZag", 0, i2);

if(zig2>0) n2+=1;

i2++;

}

while(n1<2)

{

zig1=iCustom(NULL, 0, "ZigZag", 0, i1);

if(zig1>0) n1+=1;

i1++;

}

while(n0<1)

{

zig0=iCustom(NULL, 0, "ZigZag", 0, i0);

if(zig0>0) n0+=1;

i0++;

}

...........................................

 

необходимо небольшое изменение для инди

Это код для ежедневных боксов, но мне нужны некоторые изменения - я хочу иметь разрыв, когда рынок Токио закрывается, а Лондон открывается. Итак, допустим, что бокс синий (на весь день), а разрыв должен быть белым.

#property indicator_chart_window

int gi_76 = 50;

string gs_80 = "00:00";

string gs_88 = "23:59";

extern color Color_Up = Lavender;

extern color Color_Down = Wheat;

extern color Color_Neutral = LightGray;

bool gi_108 = TRUE;

double gd_112;

int g_color_120 = Red;

void init() {

DeleteObjects();

for (int l_count_0 = 0; l_count_0 < gi_76; l_count_0++) CreateObjects("PWT1" + l_count_0, g_color_120);

Comment("");

}

void start() {

int l_datetime_0 = TimeCurrent();

for (int l_count_4 = 0; l_count_4 < gi_76; l_count_4++) {

DrawObjects(l_datetime_0, "PWT1" + l_count_4, gs_80, gs_88);

for (l_datetime_0 = decDateTradeDay(l_datetime_0); TimeDayOfWeek(l_datetime_0) > 5; l_datetime_0 = decDateTradeDay(l_datetime_0)) {

}

}

}

void DrawObjects(int ai_0, string a_name_4, string as_12, string as_20) { }

int l_str2time_28 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_12);

int l_str2time_32 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20);

int l_shift_52 = iBarShift(NULL, 0, l_str2time_28);

int l_shift_56 = iBarShift(NULL, 0, l_str2time_32);

int l_shift_60 = iBarShift(NULL, PERIOD_D1, l_str2time_28);

if (iClose(NULL, PERIOD_D1, l_shift_60) - iOpen(NULL, PERIOD_D1, l_shift_60) > 0.0) gd_112 = iClose(NULL, PERIOD_D1, l_shift_60) - iOpen(NULL, PERIOD_D1, l_shift_60);

else gd_112 = iOpen(NULL, PERIOD_D1, l_shift_60) - iClose(NULL, PERIOD_D1, l_shift_60);

if (gd_112 < iATR(NULL, PERIOD_D1, 7, l_shift_60) / 100.0) g_color_120 = Color_Neutral;

иначе {

if (iOpen(NULL, PERIOD_D1, l_shift_60) > iClose(NULL, PERIOD_D1, l_shift_60)) g_color_120 = Color_Down;

иначе

if (iClose(NULL, PERIOD_D1, l_shift_60) > iOpen(NULL, PERIOD_D1, l_shift_60)) g_color_120 = Color_Up;

}

double l_high_36 = High;

double ld_44 = Low;

if (!gi_108) {

l_high_36 = 0;

ld_44 = 2.0 * ld_44;

}

ObjectSet(a_name_4, OBJPROP_TIME1, l_str2time_28);

ObjectSet(a_name_4, OBJPROP_PRICE1, l_high_36);

ObjectSet(a_name_4, OBJPROP_TIME2, l_str2time_32);

ObjectSet(a_name_4, OBJPROP_PRICE2, ld_44);

ObjectSet(a_name_4, OBJPROP_COLOR, g_color_120);

}

int decDateTradeDay(int ai_0) {

int li_4 = TimeYear(ai_0);

int li_8 = TimeMonth(ai_0);

int li_12 = TimeDay(ai_0);

int l_hour_16 = TimeHour(ai_0);

int l_minute_20 = TimeMinute(ai_0);

li_12--;

if (li_12 == 0) {

li_8--;

if (li_8 == 0) {

li_4--;

li_8 = 12;

}

if (li_8 == 1 || li_8 == 3 || li_8 == 5 || li_8 == 7 || li_8 == 8 || li_8 == 10 || li_8 == 12) li_12 = 31;

if (li_8 == 2) {

if (MathMod(li_4, 4) == 0.0) li_12 = 29;

else li_12 = 28;

}

if (li_8 == 4 || li_8 == 6 || li_8 == 9 || li_8 == 11) li_12 = 30;

}

return (StrToTime(li_4 + "." + li_8 + "." + li_12 + " " + l_hour_16 + ":" + l_minute_20));

}

void CreateObjects(string a_name_0, color a_color_8) {

ObjectCreate(a_name_0, OBJ_RECTANGLE, 0, 0, 0, 0, 0, 0);

ObjectSet(a_name_0, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(a_name_0, OBJPROP_COLOR, a_color_8);

ObjectSet(a_name_0, OBJPROP_BACK, TRUE);

}

void DeleteObjects() {

for (int l_count_0 = 0; l_count_0 < gi_76; l_count_0++) ObjectDelete("PWT1" + l_count_0);

}

void deinit() {

DeleteObjects();

Comment("");

}

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