如何编码? - 页 221

 

请帮助我移动线路。

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

该指标按其设计工作。当价格触及该线时发出警报,但我想在此基础上进行扩展。我想这样做。

复制下面的指标,然后做这2个修改。

修改#1。

创建一条线stoploss1(已经存在),并将该线移动到我的止损位置,如果我没有设置止损,则将该线移动到500点以外,以防止警报被激活。

修改#2。

创建一条takeprofit1线(这不在代码中),并将该线移动到我的止损位置,如果我没有设置止损,则将该线移动到502点以外,以防止警报被激活。同时使用不同的声音警报。

基本上,该指标将检查我的止损和止盈是什么,并将在它们各自的价格上移动,如果没有设置止损和止盈,将把线移到500和502点以外。

这样,当市场达到我的利润或止损时,声音会让我知道,当我不看metatrader或将窗口最小化时,我可以回去看我可能有的其他设置。

非常感谢你的帮助,兄弟。

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

呼叫中心://| HLine Alert.mq4 |//| HLine Alert.mq4

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

#属性版权""

#属性 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, Bid)。

ObjectSet(LineName, OBJPROP_STYLE, LineStyle)。

ObjectSet(LineName, OBJPROP_WIDTH, 2);

ObjectSet(LineName, OBJPROP_COLOR, LineColor)。

double val = ObjectGet( LineName, OBJPROP_PRICE1);

如果(Bid-AlertPipRange*Point = val)PlaySound(AlertWav)。

//----

//----

返回(0)。

}

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

 
increase:
这是我为你做的一个带警报的MTF版本

嗨,增加...

...我下载了你的指标(带警报),我把它修好了...因为...有一个小错误...

一旦弹出箭头,就会显示标签向下,反之亦然...。

所以我想知道如何将两者合二为一......以及如何设置发送警报到

邮件。

谢谢你

附加的文件:
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中的信息是 "OrderSend函数 的无效价格1.48770000",但我似乎无法找出原因...所以请帮助我...

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);

}
 

限制交易数量:....

我试图在一个EA中添加代码,将其每天的交易数量限制在两(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:
我试图在一个EA中添加代码,将其每天的交易数量限制在两笔(2)。 每天只有一个多头交易和一个空头交易。 这是我目前掌握的代码,但在后面的测试中,它不起作用。 你能帮助我吗?

替换

datetime LongTrade=0;

datetime ShortTrade=0;

static datetime LongTrade=0;

静态数据时间ShortTrade=0。

 

请帮助解决这个EA和指标问题

我是一个新手,所以你好,正如你所看到的,我对这个问题没有任何运气。

我有这个指标(柱状图/回看300条,但它重绘得太多了。谁能给我推荐一个不需要做同样工作的指标呢?

注意:CharlieC

histoind.mq4

#property indicator_chart_window

#属性 indicator_buffers 2

#属性 indicator_color1 Red

#属性 indicator_color2 草坪绿

string gs_unused_124 = "";

bool gi_unused_132 = FALSE;

外部int RISK = 3;

外部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);

评论()。

返回(0)。

}

int start() {

int li_12;

double ld_52;

double ld_60;

双倍 ld_68;

双倍 ld_76;

双倍 ld_84;

双倍 ld_92;

双倍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;

双倍 ld_36 = RISK + 67;

双倍 ld_44 = 33 - RISK;

int l_period_24 = li_20;

如果(Bars <= 12)返回(0)。

如果(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) {

如果(MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2.0 * ld_76) ld_68 += 1.0。

li_12++;

}

如果(ld_68 >= 1.0)ld_92 = li_12。

否则 ld_92 = -1;

li_12 = li_4;

ld_68 = 0;

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

如果(MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4.6 * ld_76) ld_68 += 1.0。

li_12++;

}

如果(ld_68 >= 1.0) ld_100 = li_12;

否则 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。

如果(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++) {

}

如果(lda_108[li_4 + li_16] > ld_36) {

ld_60 = High[li_4] + ld_76 / 2.0;

g_ibuf_144[li_4] = ld_60。

}

}

如果(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++) {

}

如果(lda_108[li_4 + li_16] < ld_44) {

ld_60 = Low[li_4] - ld_76 / 2.0;

g_ibuf_148[li_4] = ld_60;

}

}

}

返回(0)。

}

附加的文件:
histoind.mq4  3 kb
 

CharlieC

当我在做这件事的时候,谁能给它加上一个声音警报(Darn Cheeky Ay, for a Newbeeee) 这东西让你做一些有趣的事情。

对不起

查理-C

原因: