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

 

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

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

Индикатор работает так, как и было задумано. Звуковой сигнал, когда цена касается линии, но я хочу расширить это. Я хочу сделать следующее:

Скопируйте индикатор ниже, затем сделайте 2 модификации:

модификация #1:

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

модификация №2:

Создайте линию takeprofit1 (ее нет в коде) и переместите ее туда, где находится мой стоп-лосс, если у меня не установлен стоп-лосс, переместите линию на 502 пункта, чтобы предотвратить активацию сигнала тревоги. Также используйте различные звуковые оповещения.

В основном индикатор будет проверять, каковы мои стоп-лосс и тейк-профит, и будет двигаться по соответствующим ценам, если стоп-лосс и тейк-профит не установлены, линии будут перемещаться на 500, 502 пункта в сторону.

Таким образом, когда рынок достигнет моего профита или стоп-лосса, звук даст мне знать, когда я не смотрю на metatrader или сверну окно, и я смогу вернуться назад и посмотреть, какие другие настройки у меня могут быть.

Большое спасибо за помощь, брат.

//+------------------------------------------------------------------+

//| HLine Alert.mq4 |

//+------------------------------------------------------------------+

#property copyright ""

#property indicator_chart_window

extern string LineName="Stoploss1";

extern color LineColor=Red;

extern int LineStyle=STYLE_SOLID;

extern int AlertPipRange=1;

extern string AlertWav="Alert2.wav";

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- индикаторы

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция деинициализации индикатора | |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция итерации индикатора |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

ObjectCreate(LineName, OBJ_HLINE, 0, 0, 0, Bid);

ObjectSet(LineName, OBJPROP_STYLE, LineStyle);

ObjectSet(LineName, OBJPROP_WIDTH, 2);

ObjectSet(LineName, OBJPROP_COLOR, LineColor);

double val = ObjectGet( LineName, OBJPROP_PRICE1);

if (Bid-AlertPipRange*Point = val) PlaySound(AlertWav);

//----

//----

return(0);

}

//+--------------------------------------------------------------

 
increase:
Вот версия MTF, которую я сделал для вас с оповещением

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

...Я скачал ваш индикатор (с алертом) я исправил его...потому что...есть небольшая ошибка...

когда стрелка всплывает вверх, ярлык показывается вниз и наоборот...

поэтому я хотел бы знать, как объединить оба в один... и как установить отправку оповещений на

по электронной почте во всех TF.

Заранее спасибо.

Файлы:
afstar.mq4  6 kb
 

пожалуйста, мне нужна помощь

пожалуйста, может ли кто-нибудь помочь мне с написанием кодов, я хочу разработать робота для стратегии скальпинга, которую я обнаружил

 

Ребята,

вот простой код для оповещения о пересечении и закрытии скользящей средней, как показано на прикрепленной картинке,

Мне кажется, что в выражении if что-то не так, пожалуйста, проверьте,

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

//+------------------------------------------------------------------+

#property copyright "Non"

#property link "non"

#property indicator_chart_window

extern int Time_Frame = PERIOD_M5;

extern int MA_Period = 20;

extern int MA_Method = MODE_SMA;

extern int MA_applied_to = PRICE_CLOSE;

extern bool Enabled = true;

extern int WhatCorner=2;

int PrevAlertTime=0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectDelete("Alart_Condition");

ObjectDelete("Alart_Setup");

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int BarsCount=IndicatorCounted();

if (Enabled == false)

{

string Alart_Condition = "Alart Disabled";

ObjectCreate("Alart_Condition", OBJ_LABEL, 0, 0, 0);

ObjectSetText("Alart_Condition", Alart_Condition , 12, "Comic Sans MS", Red);

ObjectSet("Alart_Condition", OBJPROP_CORNER, WhatCorner);

ObjectSet("Alart_Condition", OBJPROP_XDISTANCE, 1);

ObjectSet("Alart_Condition", OBJPROP_YDISTANCE, 1);

return (0);

}

// if (!Enabled) return (0);

if (Enabled == true)

{

string Alart_Setup = (GetMethodText1(MA_Method)+ (DoubleToStr(MA_Period,0))+")"+ GetMethodText(MA_applied_to)) ;

ObjectCreate("Alart_Setup", OBJ_LABEL, 0, 0, 0);

ObjectSetText("Alart_Setup", Alart_Setup , 12, "Comic Sans MS", Red);

ObjectSet("Alart_Setup", OBJPROP_CORNER, WhatCorner);

ObjectSet("Alart_Setup", OBJPROP_XDISTANCE, 1);

ObjectSet("Alart_Setup", OBJPROP_YDISTANCE, 1);

}

// if close of i < iMA && iMA < close of i-1 && last time alart .. then sell

for (int i=Bars;i>=1;i--)

{

double m = iMA(NULL,Time_Frame,MA_Period,0,MA_Method,MA_applied_to,i);

if ((CurTime() - PrevAlertTime > 20) && Close < m && m < Close)

{

Alert ("Sell " + Symbol());

PlaySound ("alert.wav");

PrevAlertTime=CurTime();

return(-1);

}

// if close of i-1 < iMA && iMA < close of i && last time alart .. then buy

if ( (CurTime() - PrevAlertTime > 20) && Close < m && m < Close )

{

Alert ("Buy "+ Symbol());

PlaySound ("alert.wav");

PrevAlertTime=CurTime();

return(-1);

}

}

//----

//----

return(0);

}

string GetMethodText1(int MA_Method)

{ switch(MA_Method)

{

case 0 : return("SMA("); break;

case 1 : return("EMA("); break;

case 2 : return("SMMA("); break;

case 3 : return("LWMA("); break; }

}

string GetMethodText(int MA_applied_to)

{

switch(MA_applied_to)

{case 0: return("C"); break; // Close

case 1: return("O"); break; // Open

case 2: return("H"); break; // High

case 3: return("L"); break; } // Low

}

//+------------

Файлы:
q.gif  10 kb
 

Помогите со скриптом

Привет...

Я полный новичок в кодировании, поэтому мне интересно, может ли кто-нибудь сказать, что не так с этим скриптом...

Я продолжаю получать ошибку 4109 ERR_TRADE_NOT_ALLOWED... сообщение в MT4 "Invalid price 1.48770000 for OrderSend function" Но я не могу понять почему... Так что, пожалуйста, помогите мне...

int start()

{

double High1;

double Low1;

double TP = 50;

double SL = 50;

int Lots = (((AccountBalance()/15)/50)/10);

//----

{

High1 = iHigh(NULL, PERIOD_D1, 0);

Low1 = iLow(NULL, PERIOD_D1, 0);

double Buy = High1*Point;

double Sell= Low1*Point;

Print(Buy);

Print(Sell);

}

//----

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,Buy,NULL,Ask-SL*Point,Ask+TP*Point);

OrderSend(Symbol(),OP_SELLSTOP,Lots,Sell,3,Bid+SL*Point,Bid-TP*Point);

Alert (GetLastError());

}

//----

return(0);

}
 

Помогите

По крайней мере, теперь я разобрался с проблемой запрета торговли...

Но теперь я продолжаю получать ошибку"недействительные стопы". Кто-нибудь может просветить меня здесь...? Я не понимаю, что здесь не так...

Заранее спасибо...

int start()

{

double High1;

double Low1;

int TP = 50;

int SL = 50;

int Lots = (((AccountBalance()/15)/50)/10);

//----

{

High1 = iHigh(NULL, PERIOD_D1, 0);

Low1 = iLow(NULL, PERIOD_D1, 0);

Print(High1);

Print(Low1);

}

//----

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,High1,NULL,Ask-SL*Point,Ask+TP*Point);

OrderSend(Symbol(),OP_SELLSTOP,Lots,Low1,NULL,Bid+SL*Point,Bid-TP*Point);

Alert (GetLastError());

}

//----

return(0);

}
 

Ограничить количество сделок до....

Я пытаюсь добавить код к советнику, который будет ограничивать количество сделок в день только двумя (2). Только ОДНА длинная сделка и ОДНА короткая сделка в день. Вот код, который у меня есть на данный момент, но при обратном тестировании он не работает.

Можете ли вы мне помочь?

datetime LongTrade=0;

datetime ShortTrade=0;

if(countOrders(OP_BUY,magic)==0 && LongTrade!=iTime(NULL,PERIOD_D1,0))

{

OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-stop_loss*Point,lTP,comment + "lTP",magic);

LongTrade=iTime(NULL,PERIOD_D1,0);

return(0);

}

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

if(countOrders(OP_SELL,magic)==0 && ShortTrade!=iTime(NULL,PERIOD_D1,0))

{

OrderSend(Symbol(),OP_SELL,lots,Bid,0,Ask+stop_loss*Point,sTP,comment + "sTP",magic);

ShortTrade=iTime(NULL,PERIOD_D1,0);

return(0);

}

СПАСИБО.

 
ForExTyro:
Я пытаюсь добавить код к советнику, который ограничит количество сделок, совершаемых им в день, только двумя (2). Только ОДНА длинная сделка и ОДНА короткая сделка в день. Вот код, который у меня есть на данный момент, но при обратном тестировании он не работает. Можете ли вы мне помочь?

Заменить

datetime LongTrade=0;

datetime ShortTrade=0;

на

static datetime LongTrade=0;

static datetime ShortTrade=0;

 

Помогите с этим советником и индикатором, пожалуйста

Я новичок, поэтому привет, как вы можете видеть, мне не везет с этим.

У меня есть этот индикатор (Гистограмма/просматривает 300 баров назад, но он перерисовывается НАМНОГО чаще. Может ли кто-нибудь предложить индикатор, который еще не будет делать ту же работу. Это все, если вы можете помочь, это было бы фантастическим.

С уважением, CharlieC

histoind.mq4

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 LawnGreen

string gs_unused_124 = "";

bool gi_unused_132 = FALSE;

extern int RISK = 3;

extern int CountBars = 300;

double g_ibuf_144[];

double g_ibuf_148[];

int init() {

IndicatorBuffers(2);

SetIndexStyle(0, DRAW_ARROW);

SetIndexArrow(0, 234);

SetIndexStyle(1, DRAW_ARROW);

SetIndexArrow(1, 233);

SetIndexBuffer(0, g_ibuf_144);

SetIndexBuffer(1, g_ibuf_148);

Comment();

return (0);

}

int start() {

int li_12;

double ld_52;

double ld_60;

double ld_68;

double ld_76;

double ld_84;

double ld_92;

double ld_100;

double lda_108[50000];

SetIndexDrawBegin(0, Bars - CountBars + 11 + 1);

SetIndexDrawBegin(1, Bars - CountBars + 11 + 1);

int l_ind_counted_8 = IndicatorCounted();

int li_20 = RISK * 2 + 3;

double ld_36 = RISK + 67;

double ld_44 = 33 - RISK;

int l_period_24 = li_20;

if (Bars <= 12) return (0);

if (l_ind_counted_8 < 12) {

for (int li_0 = 1; li_0 <= 0; li_0++) g_ibuf_144[CountBars - li_0] = 0.0;

for (li_0 = 1; li_0 <= 0; li_0++) g_ibuf_148[CountBars - li_0] = 0.0;

}

for (int li_4 = CountBars - 11 - 1; li_4 >= 0; li_4--) {

li_12 = li_4;

ld_76 = 0.0;

ld_84 = 0.0;

for (li_12 = li_4; li_12 <= li_4 + 9; li_12++) ld_84 += MathAbs(High[li_12] - Low[li_12]);

ld_76 = ld_84 / 10.0;

li_12 = li_4;

ld_68 = 0;

while (li_12 < li_4 + 9 && ld_68 < 1.0) {

if (MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2.0 * ld_76) ld_68 += 1.0;

li_12++;

}

if (ld_68 >= 1.0) ld_92 = li_12;

else ld_92 = -1;

li_12 = li_4;

ld_68 = 0;

while (li_12 < li_4 + 6 && ld_68 < 1.0) {

if (MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4.6 * ld_76) ld_68 += 1.0;

li_12++;

}

if (ld_68 >= 1.0) ld_100 = li_12;

else ld_100 = -1;

если (ld_92 > -1.0) l_period_24 = 3;

иначе l_period_24 = li_20;

если (ld_100 > -1.0) l_period_24 = 4;

иначе l_period_24 = li_20;

ld_52 = 100 - MathAbs(iWPR(NULL, 0, l_period_24, li_4));

lda_108[li_4] = ld_52;

g_ibuf_144[li_4] = 0;

g_ibuf_148[li_4] = 0;

ld_60 = 0;

if (ld_52 < ld_44) {

for (int li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {

}

if (lda_108[li_4 + li_16] > ld_36) {

ld_60 = High[li_4] + ld_76 / 2.0;

g_ibuf_144[li_4] = ld_60;

}

}

if (ld_52 > ld_36) {

for (li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {

}

if (lda_108[li_4 + li_16] < ld_44) {

ld_60 = Low[li_4] - ld_76 / 2.0;

g_ibuf_148[li_4] = ld_60;

}

}

}

return (0);

}

Файлы:
histoind.mq4  3 kb
 

CharlieC

Пока я здесь, кто-нибудь может поставить на него звуковое оповещение (Darn Cheeky Ay, for a Newbeeee) эта штука заставляет делать забавные вещи.

Извините

CharlieC

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