如何编码? - 页 225

 

新手...

首先,祝大家新年快乐!

然后感谢你们在这个论坛上分享的所有知识

我正在接近mql4,我不是一个程序员。

我希望大家能支持我写这个非常简单的策略。

多头进场。

(ask-bid) <= Z_pips /* Spreadcheck*/)

(bollinger_up-bollinger_down) <= K_pips /* 波动性检查 */)

ask < (bollinger_down + X_pips) /*价格检查 */

ma_Qperiods >= ma_Wperiods /*趋势检查 */

退出。

追踪SL = 15点

有谁有时间给我一个机会吗?

谢谢

倪文杰

 

我的NR7指标需要一些帮助

你好

我正在为NR7编制指标。

其算法是

-计算范围并将其存储在数组中

- 如果当前区间<=最后7个区间,那么当前的条形图就是nr7。

但该指标似乎将每个柱子都标记为nr7.不知道我哪里出错了。

屏幕截图在这里

2010-01-18_0531

附加的文件:
nr7.mq4  3 kb
 

advancedsar EA

嗨,朋友们。

我需要你们的帮助,如果你们中有人能帮助我修改我从其他线程得到的一个EA,但不幸的是我没有它的mql文件。

从这个EA的原始逻辑来看,我想做一些修改,如下。

- 这个EA只在4位数上工作,帮助改善他们也能在5位数上工作。

- 这个EA是根据普通的马丁格尔系统工作的,我需要添加更多的2倍模式的操作模式。

1.如果EA在最后一笔交易中开出了订单,并且他们击中了TP,那么EA将开始新的循环,并以与最后一笔订单相同的订单开出交易。例如:如果最后一笔交易是买入订单,并且他们击中了TP,那么EA将继续打开买入交易,除非他们击中了SL,EA将改变订单为相反方向的卖出订单。卖出订单也是如此,只要他们在卖出订单上获利,那么他们继续以新的周期打开卖出订单,直到他们得到SL和方向改变为买入订单。

2.2.第二种操作模式。该EA在买入-卖出-买入-卖出-买入的顺序逻辑上工作,这种模式是为没有趋势的市场范围设计的。

感谢你们的帮助。

谢谢

yoha

附加的文件:
 

知道为什么这个EA不能下订单吗?

Hey guys, it's been a while since I am back in this game .... anyway just starting to refresh on mql....lot has changed here.

基本上,我想在两边开盘后的10个点外放置买入和卖出的 挂单。盈利是在离挂单15点的地方。

问题是订单从未被放置...

int counted_bars = IndicatorCounted();

int pos = Bars - counted_bars + 1;

if (counted_bars == 0) pos = Bars - 10;

if (counted_bars>0) counted_bars--;

double currentPrice = iClose("EURUSD",PERIOD_M1,0);

while(pos>0)

{

//Putting Pending LongOrder

Print("Long...");

OrderSend("EURUSD",OP_BUYLIMIT,1,Open+10*Point,3,0,Open+25*Point,"Pending Long Order", 888, 0, Green);

Print("Short...");

//Putting Pending ShortOrder

OrderSend("EURUSD",OP_SELLSTOP,1,Open-10*Point,3,0,Open-25*Point,"Pending Short Order", 999, 0, Red);

pos--;

}
 

我不知道数条与EA有什么关系? 它不是为指标设计的吗?

我想如果你把这部分拿掉,你可能就没事了。

 

数据时间变量

你好。

我想写出实际数据和时间

extern int starthour = 8;

extern int startminute = 0;

[/CODE]

in my variable

[CODE]

datetime starttime= 0;

我怎么写呢?

但我怎么能这样写呢。

starttime = 一天中的日期 + starthour + startminute。

 

我不太清楚你在问什么,但我猜你是想把一个日期增加若干小时和分钟。如果你看一下TimeCurrent()的帮助文件,你会发现它返回的时间是秒。所以从逻辑上你可以推断出,要增加分钟,你要乘以60,而对于小时,你要乘以3600(60*60)。

所以你会有这样的结果...

TimeCurrent()+(starthour*3600)+(startmin*60);

只要用你指定的 "起始日期 "的时间替换TimeCurrent() 即可。

拉克斯

 
sunshineh:
你好。

我想写出实际数据和时间

extern int starthour = 8;

extern int startminute = 0;

[/CODE]

in my variable

[CODE]

datetime starttime= 0;

我怎样才能写出这些呢?

但我怎么能这样写呢。

starttime = 一天中的日期 + starthour + startminute。

使用StrToTime函数。如果你不把日期传给这个函数,而只传给小时和分钟,它就会使用当前日期。像这样。

datetime startTime = StrToTime( StartHour+": "+ StartMinute)。

其中StartHour和StartMinute是字符串。

string StartHour = 8;

字符串StartMinute = 0。

 

非常感谢!!

我还有一个问题。

如果我想让我的EA只在蜡烛的收盘价买入或卖出,我如何编写代码?

我想我可以写

if(!Close[0]) return;

但它不起作用。

 
sunshineh:
非常感谢!!

我还有一个问题。

如果我想让我的EA只在蜡烛的收盘价上买入或卖出,我如何编码?

我想我可以这样写

if(!Close[0]) return;
但它并不奏效。

你需要定义一个变量,比如说它将是。

int barsNumber = 0;

在全局部分(例如,在初始函数 之前)。

然后在启动函数中的sendOrder函数部分,你需要检查这个条件

if(Bars>barsNumber)

如果为真,则将我们的变量barNumber设置为Bars

barsNumber = Bars;

因此,所有的东西看起来都是这样的。

#一些属性

int barsNumber = 0;

int init()

{

}

int deinint()

{

}

int start()

{

如果(Bars>barsNumber)

{

SendOrder(...)。

barsNumber = Bars;

}

}