编码帮助 - 页 22

 

谢谢你的回答,罗伯特

这样的仪表盘是完美的,但我没有找到bb squeeze的仪表盘,而且我不知道如何改变现有的仪表盘来检测bb squeeze。

我自己的想法很简单,看起来像这样。

int Current;

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

//| expert start function |

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

int start() {

int USDCHF, GBPUSD, EURUSD, AUDUSD;

double upperBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, Current + 0);

double upperKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 0, Current + 0);

double lowerBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, Current + 0);

double lowerKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 2, Current + 0);

if(upperBB_USDCHFlowerKC_USDCHF)

Comment(": BollingerSqueeze for USDCHF");

return(0);

}

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

这只是针对几个不同的对子,但正如我所说的,"评论 "一直在刷新。

编辑:好的,我修好了,不再需要帮助了。

 
crexsking:
嗨,Mladen和所有的会员朋友。

我交易的图表模式是 "大蜡烛移动"(Open[0]-Close[0]>32点或反之),我交易eurusd(FXOpen的H1 <--最准确的蜡烛大小和模式)...

所以,绝对没有任何指标。只有交易理念。

我试图编写一个关于它的逻辑的EA,但我认为那里缺少一些东西......请帮助!!!。

我所说的 "缺失的东西 "是指什么呢?

-我希望在 "大蜡烛 "发生之前......系统计算出每根蜡烛的最后4根蜡烛<20点(开盘-收盘或相反)。

但是......发生的事情是我的mql4编码没有读取大蜡烛之前的最后4根蜡烛......我很确信......。

应该发生的是。

1.大蜡烛的时间:-

- 3pm,4pm,5pm(London Open) ...n...8pm,9pm,10pm(美国公开赛) <----,因为我是马来西亚人,所以把你的电脑调到GMT 8.00++。

2.大的蜡烛尺寸:-

- 32点以上(如果之前的侧向是20点以下)。

- 42点以上(如果之前的回撤是20点以上)。

3.侧向市场:-

- 至少4小时内低于50点,必须有不同的颜色。

4.无效或危险的市场(市场取消): <------ 如果发生这种市场情况,不进行交易

1.1.伦敦开盘前的回撤 B,B,B,B向上或S,S,S,S向下。 <--- B,B,B,B = 蜡烛买入,买入,买入...连续。

2.大蜡烛收于日线区间的最大值。<---- 75点最小高低点

3.大蜡烛在晚上10点出现。<----- GMT 8++或马来西亚时间

4.大蜡烛太大,超过80点。

5.在伦敦开盘前有超过50点的蜡烛。

6.6.在东京时段出现上涨行情的形式,在伦敦开盘时出现向上的大蜡烛(反之则是向下的)。

编码问题附后:-

extern double trigger = 32;

extern double sideway = 20;

extern int hour1 = 6;

extern int hour2 = 7;

extern int hour3 = 8;

extern int hour4 = 9;

extern int hourCB = 10;

extern int hourTRADE = 11;

extern int TradeTimeStart = 0;

extern int TradeTimeEnd = 23;

//---Variables

double currentPrice = 0.00000;

static datetime barStart;

string openTrades = "none";

int ticket;

int i = 0;

double lotSize;

double CBB = 0;

double CBS = 0;

double CBBT;

double CBST;

double PreviousCBB;

double PreviousCBS;

double CS1B;

double CS2B;

double CS3B;

double CS4B;

double CS5B;

double CS6B;

double CS1S;

double CS2S;

double CS3S;

double CS4S;

double CS5S;

double CS6S;

double CS1BT;

double CS2BT;

double CS3BT;

double CS4BT;

double CS1ST;

double CS2ST;

double CS3ST;

double CS4ST;

double PreviousCS1B;

double PreviousCS2B;

double PreviousCS3B;

double PreviousCS4B;

double PreviousCS1S;

double PreviousCS2S;

double PreviousCS3S;

double PreviousCS4S;

double GroupSW1B;

double GroupSW2B;

double GroupSW3B;

double GroupSW4B;

double GroupSW5B;

double GroupSW6B;

double GroupSW1S;

double GroupSW2S;

double GroupSW3S;

double GroupSW4S;

double GroupSW5S;

double GroupSW6S;

string permit = "suspended";

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start(){

CBB=(Close[1]-Open[1])/Point;

CBS=(Open[1]-Close[1])/Point;

CBBT=(hourCB==Hour());

CBST=(hourCB==Hour());

PreviousCBB = (CBB == CBBT);

PreviousCBS = (CBS == CBST);

CS1B=(Close[7]-Open[7])/Point;

CS2B=(Close[6]-Open[6])/Point;

CS3B=(Close[5]-Open[5])/Point;

CS4B=(Close[4]-Open[4])/Point;

CS5B=(Close[3]-Open[3])/Point;

CS6B=(Close[2]-Open[2])/Point;

CS1S=(Open[7]-Close[7])/Point;

CS2S=(Open[6]-Close[6])/Point;

CS3S=(Open[5]-Close[5])/Point;

CS4S=(Open[4]-Close[4])/Point;

CS5S=(Open[3]-Close[3])/Point;

CS6S=(Open[2]-Close[2])/Point;

CS1BT=(hour1==Hour());

CS2BT=(hour2==Hour());

CS3BT=(hour3==Hour());

CS4BT=(hour4==Hour());

CS1ST=(hour1==Hour());

CS2ST=(hour2==Hour());

CS3ST=(hour3==Hour());

CS4ST=(hour4==Hour());

PreviousCS1B = (CS1B == CS1BT);

PreviousCS2B = (CS2B == CS2BT);

PreviousCS3B = (CS3B == CS3BT);

PreviousCS4B = (CS4B == CS4BT);

PreviousCS1S = (CS1S == CS1ST);

PreviousCS2S = (CS2S == CS2ST);

PreviousCS3S = (CS3S == CS3ST);

PreviousCS4S = (CS4S == CS4ST);

GroupSW1B = (CS3B<sideway&&CS4S<sideway&&CS5B<sideway&&CS6S=trigger);

GroupSW1S = (CS3S<sideway&&CS4B<sideway&&CS5S<sideway&&CS6B=trigger);

currentPrice = iClose(NULL,0,0);

Comment("Price Continuation\n",

"Status: ",status()

);

//----Trade Algorithm

//trade hours value...

if(TradeTimeStart <= Hour() && Hour() <= TradeTimeEnd){

if(openTrades == "none" && permit == "approved"){

requestLongOrder();

requestShortOrder();

}

else{

requestPermit();

}

}

if(openTrades == "long"){

manageLongTrade();

}

if(openTrades == "short"){

manageShortTrade();

}

return(0);

}

//---FUNCTIONS---

//--

void requestLongOrder(){

if(hourTRADE==Hour() && GroupSW1B){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,currentPrice-stopLoss,currentPrice+takeProfit,"My order ",06010,0,Green);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "long";

permit = "suspended";

}

}

}

void requestShortOrder(){

if(hourTRADE==Hour() && GroupSW1S){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,currentPrice+stopLoss,currentPrice-takeProfit,"My order ",06010,0,Red);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "short";

permit = "suspended";

}

}

}

* 如同所附的屏幕截图,应该发生什么。

请帮助...

谢谢...

谢谢。

蠕变

你好,Crexsking。

我唯一能想到的是,你可能需要对5位数的经纪人进行转换,在开始后,放上这样的东西

double pipMultiplier = 1; (在启动前)

开始()

{

如果(Digits==3 || Digits==5)

pipMultiplier = 10。

否则pipMultiplier = 1。

然后在每个点之后,像这样的点*pipMultiplier。

 

评论是如何解决的?

Deorn:
谢谢你的回答,罗伯特

这样的仪表盘是完美的,但我没有找到bb squeeze的仪表盘,而且我不知道如何改变现有的仪表盘来检测bb squeeze。

我自己的想法很简单,看起来像这样。

========

这只是针对几个不同的交易对,但正如我所说的,"评论 "一直在刷新。

编辑:好的,我修好了,不再需要帮助了

嗨,Deorn。

很高兴听到你解决了你的挑战。能否分享一下你是如何纠正 "评论 "的刷新的?

祝你的编码工作顺利......!

罗伯特

 
cosmiclifeform:
你好,Deorn。

很高兴听到你解决了你的挑战。能否分享一下你是如何纠正 "评论 "的刷新的?

祝你的编码工作愉快......!

罗伯特

我按照你说的用'objectcreate'做的。

我实现了10个不同货币对的M5到月度的时间框架。

Keltner Channels需要有准确的名称 "Keltner Channels",我选择了系数为1.5的设置20。

两者都是两个正常的指标

我将选择一个空白窗口来放置它

很抱歉,这是我的第一个自己的指标,但它能完成工作。

问候

附加的文件:
 
mrtools:
你好,Crexsking。

我唯一能想到的是,你可能需要为5位数的经纪商进行转换,在开始后放上类似这样的东西

double pipMultiplier = 1; (在启动前)

开始()

{

如果(Digits==3 || Digits==5)

pipMultiplier = 10。

否则pipMultiplier = 1。

然后在每个点之后,像这样的点*pipMultiplier。

嗨,mrtools,谢谢......

我会做的,但在此之前,我可以问一下......用5位数的经纪商转换它的关系是什么?

我的意思是......在这之前,系统无法识别侧向市场最后4根蜡烛中的牛市或熊市。

如果我输入这个代码,系统会识别它吗?

对不起,我的英语不好...

问候。

Crexsking

 
crexsking:
你好,mrtools,谢谢......

我会做的,但在此之前,我可以问......用5位数的经纪商来转换它的关系是什么?

我的意思是......在这之前,系统不能识别侧向市场最后4根蜡烛的牛市或熊市。

如果我输入这个代码,系统会识别它吗?

对不起,我的英语不好...

问候。

皱纹

Crexsking,它会把它变成点数,所以如果你有.91135的开盘价和.90685的收盘价,差值是.0045,如果你是5位数的经纪人,点等于450,因为它除以.00001,但如果你使用转换,它正确地使45点,因为你然后除以.0001或.00001 x 10.至于识别牛或熊烛,真的不能说因为我没有看到任何其他错误与你的代码。

 

大玩家的编码...请帮助...

---- 已编辑

Ok done...

问题解决了。

问候。

crexsking

 

需要帮助

你好,对于所有的编码大师,我需要你的帮助,请。

如果我想创建水平线,蜡烛组(收盘-开盘)的上下限值很小,该如何编码呢?值(收盘-开盘)*100000=无极性,总是正的。我的蜡烛数量的外部内容。

例子。

extern int (close - open)*100000 = 10; // 其意思是(close - open)<= 10

extern int 蜡烛数的最大值=3。

"水平线上限"=取自该组中固有的最高开/收盘价

"水平线下限"=取自该组中固有的最高开盘/收盘价

向您致意。

谢谢你

附加的文件:
 

...

我恐怕不明白你到底是什么意思。所以只回答了你问题的一部分。

如果你把5位数经纪商上的5位数符号的差值乘以100000,那么你将得到所需的数值,但如果该符号是日元的一个交叉点,你将得到远远超过这些数值的数值。此外,在4位数的经纪商,你也会得到更大的价值。为了防止这种情况,最好的方法是计算点差。这就是你如何做到这一点的方法。
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

//

//

// calculate the difference in pips

//

//

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

不管是什么符号或经纪人,它总是以点为单位。

至于最低和最高值,你可以用这样的代码找出一个范围内的最低低值和最高高值(这个例子被设定为寻找3个条形的范围,因为你正在谈论它):
[PHP]double highest = High;

double lowest = Low;

paijowijaya:
你好,对于所有的编码大师,我需要你的帮助,请。

如果我想创建水平线,蜡烛组(收盘-开盘)的上下限值很小,那么如何编码呢?值(收盘-开盘)*100000=无极性,总是正的。我的蜡烛数量的外部内容。

例子。

extern int (close - open)*100000 = 10; // 其意思是(close - open)<= 10

extern int 蜡烛数的最大值=3。

"水平线上限"=取自该组中固有的最高开/收盘价

"水平线下限"=取自该组中固有的最高开盘/收盘价

致以最诚挚的问候。

谢谢你
 
mladen:
恐怕我不太明白你的意思,所以只回答你问题的一部分。 如果你把5位数经纪商的5位数符号的差值乘以100000,那么你将得到所需的数值,但如果该符号是日元的一个交叉符号,你将得到远远超过这些数值的数值。此外,在4位数的经纪商,你也会得到更大的价值。为了防止这种情况,最好的方法是计算点差。这是你如何做到的。
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

// calculate the difference in pips

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

:
[PHP] double highest = High;

double lowest = Low;

很惊讶,我很高兴你回答了我的问题,Mladen先生。

但是,对不起,我仍然感到困惑,你会给完整的编码?值*100000我的意思是在读数时要简单,而不是0.0002(逗号后面的4位数),但如果你有更简单的方法,我会按照你的方法。实质上,当发现三根蜡烛(平衡区或买方=卖方或侧向区,每个TF都有不同数量的蜡烛)是小的(其值取自收盘-开盘之间的差异),我想画一条水平线,就像我上传的图片那样。这样我就可以通过这条线知道图表中的供需情况。或者你有这样一个指标吗?

致以最诚挚的问候。

谢谢您,Mladen先生