编码帮助 - 页 19

 

我已经在你的帮助下完成了我的EA 再次感谢你

你好,mLaden。

再次感谢您的巨大帮助

我已经在你的帮助下完成了我的EA,再次感谢。

谢谢

 

重绘指标

我几周前在这个 "编码帮助 "的主题上发布了这个问题,但没有得到回应。

大多数MTF指标都会重绘,有些比其他的更多。我有一个重绘的指标,但有一个因素非常好,可以包含在一个方法中。问题是,我需要不断地手动更新/刷新,以便使它有意义。有什么方法可以在每一个刻度 或每一个'x'秒/刻度时自动刷新?

目前,为了刷新,我要么改变图表时间,然后再回去,要么进入图表/刷新选项卡,要么在图表上添加另一个指标,然后删除之前的一个.......,一遍又一遍!非常耗时。非常耗费时间!

如果有一种方法可以做到这种自动刷新,我将分享我的发现............。

谢谢。

el bee

 

...

el bee

Metatrader在有新的tick出现时,会向窗口中的每一个指标发送自动刷新信号,所以这不是一个刷新的问题。通常情况下,你遇到的这种问题发生在一个指标没有正确找到变化的条数(通常在指标中被命名为 "极限")......所以这是该指标的一个问题。当你改变时间框架时,它会重新计算所有的条数,这就是为什么在这种情况下它会正确显示,而当只有一个条数的值发生变化时却不能正确显示。

总结:检查该指标的代码 - 它有一个错误。

el bee:
我几周前在这个主题 "编码帮助 "上发布了这个问题,但没有得到回应。

大多数MTF指标都会重绘,有些比其他的更多。我有一个指标,它的重绘量很小,但有一个因素非常好,可以包含在一个方法中。问题是,我需要不断地手动更新/刷新,以便使它有意义。有没有一种方法可以在每一个刻度或每一个'x'秒/刻度时自动刷新?

目前,为了刷新,我要么改变图表时间,然后再回去,要么进入图表/刷新选项卡,要么在图表上添加另一个指标,然后删除之前的一个.......,一遍又一遍!非常耗时。非常耗费时间!

如果有一种方法可以做到这种自动刷新,我将分享我的发现............。

谢谢。

el bee
 

指标帮助

我可以使用一个指标,在最近的蜡烛上放一条垂直线,可以调整,如果有人有一个,可以分享,或者可以做一个,这将是非常感谢的。

 

有什么错误的代码吗?

我想写一个基于开盘和收盘的EA。

但我有一个问题,就是开仓的条件。

我的方法是这样的。

+ 当当前条形图的开盘价高于前一条形图的收盘价时卖出。TP是前一栏的收盘价。

+ 买入,当当前条形图的开盘价低于前一个条形图的开盘价。TP是上一交易日的开盘价

+ CLOSE当当前条形收盘。

这里是代码(我还在努力学习mql4,所以我知道这不是最好的代码)

#property link "sando"

#define MAGICMA 20050610

//====================parameter===================//

extern double solantang =3;

外置双倍数solangiam =3。

外置双倍LotsSize =1。

//==============================================//

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

//| 检查未完成的交易。

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

计算当前订单(字符串符号)

{

int buys=0,sells=0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)

{

如果(OrderType()==OP_BUY) buys++;

如果(OrderType()==OP_SELL) sells++;

}

}

//---- 返回订单量

if(buys>0) return(buys);

否则返回(-sells)。

}

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

//|资金管理(类型3)|

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

double moneymanagement3()

{

double LotsSize = 0.1;

如果(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)。

如果(OrderProfit() > 0)

{

如果(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

}

否则

{

LotsSize = LotsSize。

}

}

否则

{

LotsSize = OrderLots() * solantang;

}

}

返回(NormalizeDouble(LotsSize,2))。

}

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

//| CONDITION to open a trade |/+。

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

空白的opentrade()

{

int res;

如果(Close[0]<Open[1])

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red)。

返回。

}

如果(Open[0]>Open[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],",MAGICMA,0,Blue)。

返回。

}

}

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

//|专家启动功能|

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

空白启动()

{

//---- 检查历史和交易情况

如果(Bars<100 || IsTradeAllowed()==false) 返回。

//---- 按当前符号计算未结订单

如果(CalculateCurrentOrders(Symbol())==0) opentrade()。

//否则donggiaodich()。

//----

}

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

并请查看 附件中的图片

我认为代码中存在一些问题

有时EA在满足条件的情况下不做交易T_T我不知道为什么

有时EA在不符合条件的情况下也会进行交易!

请帮助我解决代码中的问题。

附加的文件:
1_2.gif  12 kb
new_edge.mq4  4 kb
 
7thman:
我想写一个基于开盘和收盘的EA

但我有一个问题,关于条件打开一个交易。

我的方法是这样的。

+ 卖出,当当前条形图的开盘价高于前一条形图的收盘价。TP是前一栏的收盘价。

+ 买入,当当前条形图的开盘价低于前一个条形图的开盘价。TP是上一交易日的开盘价

+ CLOSE当当前条形收盘。

这里是代码(我还在努力学习mql4,所以我知道这不是最好的代码)。

并请查看附件中的图片

我认为代码中存在一些问题

有时EA在满足条件的情况下不做交易_T我不知道为什么

有时EA在不满足条件的情况下进行交易!我不知道为什么。

请帮助我修复代码中的错误。

[lang=pl]+ 卖出:当当前条形图的开盘价高于前一条形图的收盘价。TP是前一交易日的收盘价。

+ 买入 当当前条形图的开盘价低于前一个条形图的开盘价时。TP是前一栏的开盘价

这里是第一个错误。

如果(Close[0]Close[1])

if(Open[0]>Open[1]) (应该是Open[0]<Open[1])

第二个是StopLoss。在你的代码中,你设置了StopLose,但在上面的描述中

你说你想在新条形图出现时关闭交易。

这里还有一个问题。假设Open[0]<Open[1]。差异可能非常小

当你的订单被执行时,价格将超过Open[1],TP将

小于订单开盘价。下面我添加了一个条件,可以捕捉这种情况。

如果我很好的理解,你想在交易结束后关闭所有的订单,下面是代码。

#property link "sando"

#define MAGICMA 20050610

//====================parameter===================//

外置双倍索朗坦=3。

外置双倍数solangiam =3。

外置双倍LotsSize =1。

//==============================================//

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

//| 检查未完成的交易。

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

计算当前订单(字符串符号)

{

int buys=0,sells=0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)

{

如果(OrderType()==OP_BUY) buys++;

如果(OrderType()==OP_SELL) sells++;

}

}

//---- 返回订单量

if(buys>0) return(buys);

否则返回(-sells)。

}

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

//|资金管理(类型3)|

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

double moneymanagement3()

{

double LotsSize = 0.1;

如果(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)。

如果(OrderProfit() > 0)

{

如果(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

}

否则

{

LotsSize = LotsSize。

}

}

否则

{

LotsSize = OrderLots() * solantang;

}

}

返回(NormalizeDouble(LotsSize,2))。

}

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

//| CONDITION to open a trade |/+。

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

空白的opentrade()

{

int res;

如果(Close[1] Close[1] )

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1]," ",MAGICMA,0,Red)。

返回。

}

如果(Open[0]<Open[1] && Ask < Open[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blue)。

返回。

}

}

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

//|专家启动功能|

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

空白启动()

{

如果(isNewBar())

{

closeOrders(MAGICMA,OP_BUY);

closeOrders(MAGICMA,OP_SELL)。

}

Print(Close[1]-Open[0]);

//---- 检查历史和交易情况

if(Bars<100 || IsTradeAllowed()==false) return;

//---- 按当前符号计算未结订单

如果(CalculateCurrentOrders(Symbol())==0) opentrade()。

//否则donggiaodich()。

//----

}

void closeOrders(int oMagic,int oType) {

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

如果(OrderMagicNumber()==oMagic || oMagic<0){

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==oType || oType<0){

如果(OrderType()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(), Bid,0)。

i--;

}

如果(OrderType() == OP_BUYSTOP)

{

OrderDelete(OrderTicket())。

i--;

}

如果(OrderType()==OP_SELL) {

OrderClose(OrderTicket(),OrderLots(),Ask,0)。

i--;

}

如果(OrderType() == OP_SELLSTOP)

{

OrderDelete(OrderTicket())。

i--;

}

}

}

}

}

}

}

bool isNewBar() {

static int prevTime;

bool newBar=false;

if(Time[0]!=prevTime) {

newBar=true。

prevTime=Time[0];

}

return(newBar)。

}

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

干杯。

Grzesiek[/lang]

 

编码帮助。使用ECN经纪商的EA放置止损和止盈

使用ECN经纪商的止损、止盈

朋友们。

我是一个MQL4编程 的新手,需要帮助在ECN经纪商的ORDERSEND中附加一个SL和TP。

最初,我不明白为什么SL和TP会使我的订单出现错误,直到有人指出,必须将ORDERSEND中的StopLoss和TakeProfit字段设置为 "0",否则ECN/STP经纪商将不会执行订单。

因此,我的问题是:我怎样才能在市场上执行一个订单,然后立即(或在一两秒内)给该票据附加一个SL/TP?

下面是与我的问题相关的一段代码。

如果(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE)。

}

谁能帮我在OrderSend命令后插入代码,以便我可以在该特定票据上附加一个任意为25点的TP/SL?

任何帮助都将是非常感激的。谢谢。

请注意。

卡西欧

 
kasio:
使用ECN经纪商的止损、止盈

朋友们。

我是一个MQL4编程的新手,需要帮助将SL和TP附加到ECN经纪商的ORDERSEND中。

最初,我不明白为什么SL和TP会使我的订单出现错误,直到有人指出,必须将ORDERSEND中的StopLoss和TakeProfit字段设置为 "0",否则ECN/STP经纪商将不会执行订单。

因此,我的问题是:我怎样才能在市场上执行一个订单,然后立即(或在一两秒内)给该票据附加一个SL/TP?

下面是与我的问题相关的一段代码。

如果(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE)。

}

谁能帮我在OrderSend命令后插入代码,以便我可以在该特定票据上附加一个任意为25点的TP/SL?

任何帮助都将是非常感激的。谢谢。

请注意。

卡西奥

嗨,卡西奥。

如果你在ECN经纪商交易,你应该发送没有SL/TP的订单并修改它。

下面是一个例子。

extern double StopLoss = 25;

extern double TakeProfit = 25;

if(isECN=true )

{

ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET)。

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

}

double sltpValue(double w1, int w2)

{

如果(w2 == 0)

返回(0)。

返回(NormalizeDouble(w1, Digits))。

}

我希望它是清楚的

如果有更多问题,请联系我。

欢呼声。

尊敬的先生

 

信息不是每时每刻都在更新

嗨,伙计们。

我写了这个EA,在我的屏幕上显示各种指标的信息。

但是,当我把EA附加到我的图表上时,信息每5分钟才更新一次(在5分钟图表上)。

而不是每隔一段时间。 我的编码有什么问题吗?我希望看到信息每隔一段时间就变化一次。

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

//| test.mq4 |

//| Copyright © 2011, Test Inc.|

//|test.net - 测试资源和信息。|

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

#property copyright "Copyright © 2011, Test Inc."

#property link "http://www.test.net"

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

//|标签 |

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

#define ccilabel "CCIValue"

#define rsilabel "RSIValue"

#define stochlabel "StochValue"

#define upperbandlabel "UpperBandValue" #define upperbandlabel "UpperBandValue"

#define lowerbandlabel "LowerBandValue" #define lowerbandlabel "LowerBandValue"

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

//| 专家初始化功能 |

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

int init()

{

//----

//----

return(0);

}

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

//|专家的去初始化功能|

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

int deinit()

{

//----

//----

return(0);

}

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

//|专家启动功能|

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

int start()

{

//----

//===================================================================

//动态相对强弱指数的出现

//===================================================================

双重RSI。

double UpperBand;

double LowerBand;

RSI=iCustom(NULL,0, "动态区域RSI",14,0,1)。

UpperBand=iCustom(NULL,0, "动态区域RSI",14,1,1)。

LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1);

//===================================================================

// CCI的出现

//===================================================================

双CCI。

CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1)。

//===================================================================

// 随机性的出现

//===================================================================

double Stoch;

Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1)。

//===================================================================

// 显示信息

//===================================================================

// CCIValue

ObjectDelete(ccilabel)。

ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);

ObjectSetText(ccilabel, "CCIValue is " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue)。

// StochValue

ObjectDelete(stochlabel);

ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);

ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue)。

// RSIValue

ObjectDelete(rsilabel)。

ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);

ObjectSetText(rsilabel, "RSIValue is " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue)。

// UpperBandValue

ObjectDelete(upperbandlabel)。

ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80);

ObjectSetText(upperbandlabel, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue)。

// LowerBandValue

ObjectDelete(lowerbandlabel)。

ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);

ObjectSetText(lowerbandlabel, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue)。

//----

返回(0)。

}

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

 

幼儿园的支持和阻力模型

你好。

我需要有人修改附件中的一个支撑和阻力指标。第一个指标在出现突破时有一个提示。我需要在新的支撑或阻力条出现时发出警报。这个指标是最好的支撑/阻力指标之一,也非常强大,特别是在较高的时间段。

谢谢

kg_support_and_resistance.mq4

kg_support_and_resistance_alert_revision_2.ex4