int start(){//----double MA_0=iMA(NULL,0, pMA, pSh, mode, price,0);double MA_1=iMA(NULL,0, pMA, pSh, mode, price,1);
перед использованием в коде open_1 или open_0 их нужно инициализировать, т. е. объяснить программе
к виду каких данных эти опены относятся( целые, дробные, строчные, логические)double open_0=Open[0];// double - дробное число. 0 и 1 это номера ячееек,double open_1=Open[1];// которые в данном случае являются номерами баровif( MA_1<Open[1]&& MA_0>Open[0])if( CheckOrders(OP_SELL))//продажа{if(!OrderSend(Symbol(),OP_BUY, Lots,Ask,3,0,0,NULL, MagicNumber))Print("Не открыт ордер Buy. Ошибка №",GetLastError());}if( MA_1>Open[1]&& MA_0<Open[0])if( CheckOrders(OP_BUY))//покупка{if(!OrderSend(Symbol(),OP_SELL, Lots,Bid,3,0,0,NULL, MagicNumber))Print("Не открыт ордер Sell. Ошибка №",GetLastError());}//----return(0);}
大家好。
我决定成为一名作家。我想在MQL4 中写一些东西。我读了一些关于它的资料,决定写一个专家顾问,当RSI ,周期8越过70时开仓,当 越过30时平仓,其他的都不会发生。我写的,这里是代码
//+------------------------------------------------------------------+//| 4doc.mq4 |
//| Alex |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#财产版权"Alex"
#属性链接 "http://www.metaquotes.net"
//---- 输入参数
外来的Int PerRSI=8;
外部intNamber=77771。
外来的双倍Lots=1.0。
/+------------------------------------------------------------------+//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
䵮䵮
cnt=0。
票。
总计。
双
rsi_0, //值。rsi_0 电流
rsi_1; // 值。rsi_1第一条
如果(Bars<100)
{
Print("小于100的条形图")。
return(0);
}
rsi_0=iRSI(NULL,0, PerRSI,0,0); // 当前栏位
rsi_1=iRSI(NULL,0, PerRSI,0,1); // 当前小节加1
total=OrdersTotal()。
如果(total<1)
如果(rsi_0 < rsi_1 && rsi_0 > 70) //如果线已经越过70
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My RSI", MagicNamber,0,Green);
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("卖出订单开仓:",OrderOpenPrice())
}
else Print("错误打开卖出订单:",GetLastError())。
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates()。
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_SELL && //这是一个未平仓的头寸?OP_BUY或OP_SELL
OrderSymbol()==Symbol()) //工具匹配?
{
如果(OrderType()==OP_SELL)//仓位已打开
{
如果(rsi_0 > rsi_1 && rsi_0 < 30) // 如果线已经越过30
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置
return(0); // 退出
}}}}}
我已经测试了它,它的工作原理基本与我想的一样, 。我决定修改代码,当SSI - 14越过100水平时开 仓,当 越过100水平时平仓。我将RSI 代码改为CCI ,这里是。
//+------------------------------------------------------------------+//| CCI-DOC.mq4|
//| Alex |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#财产版权 "Alex"
#属性链接 "http://www.metaquotes.net"
//---- 输入参数
外置 int PerCCI=14;
在外部,MagicNamber=88881。
外来的双倍Lots=1.0。
//+------------------------------------------------------------------+//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
䵮䵮
cnt=0。
票。
总计。
双
cci_0, // cci_0值。cci_0 电流
cci_1; // cci_1值。cci_1第一条
如果(Bars<100)
{
Print("小于100的条形图")。
return(0);
}
cci_0=iRSI(NULL,0, PerCCI,0,0); // 当前栏位
cci_1=iRSI(NULL,0, PerCCI,0,1); // 当前条形图加1
total=OrdersTotal()。
如果(total<1)
如果(cci_0 < cci_1 && cci_0 > 100) // 如果(线已越过100)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My CCI", MagicNamber,0,Green);
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("卖出订单开仓:",OrderOpenPrice())
}
else Print("错误打开卖出订单:",GetLastError())。
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_SELL && //这是一个未平仓的头寸?OP_BUY或OP_SELL
OrderSymbol()==Symbol()) //工具匹配?
{
如果(OrderType()==OP_SELL)//仓位已打开
{
如果(cci_0 > cci_1 && cci_0 < -100) // 如果线已经越过 -100
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置
return(0); // 退出
}}}}}
开始测试CCI ..... 好了,什么都没有发生,没有卖出或买入,日志中没有错误,在测试结束时打开曲线图,但它不是CCI,而是RSI 70-30,周期为14.....。也许有经验的作家会理解并告诉你为什么以及如何解决这个问题。
然后,日志中的演示更清楚地显示了一切。在哪里寻找错误比较清楚。在我自己身上...
>> 谢谢你
你好!!!!!!!
我想/非侵入性地/;-))提醒你关于P的问题。64关于MA的交易条件...预先感谢您(对一个傻瓜来说,这是在裤子上踢了一脚)
先生们,你们能告诉我,如果我在终端中使用同一交易工具的几个不同时间的图表吗?
流量是如何被程序消耗的?它消耗的是最小时间段的流量,还是所有时间段的流量?
你好!!!!!!!
我想/非侵入性地/;-))提醒你关于P的问题。64关于MA的交易条件...预先感谢您(对傻瓜的踢腿)。
谢谢你的答复!!。
1.让我澄清一下,有双开_0和双_1的两行需要写在双MA行之前,还是不加批判的??????。
2.在交易条件中,你可以用open_0,1代替open[0,1] ????????.....。
谢谢你的答复!!。
1.让我澄清一下,有双开_0和双_1的两行需要写在双MA行之前,还是不加批判的??????。
2.你可以用open_0,1代替open[0,1] ????????.....
1.不是关键。
2.可以
请帮助我...我可能很懒,但我不知道如何将程序 连接到模拟或真实账户上进行交易......。请解释一下该写什么,在哪里唱,我求你了......提前感谢!))。
1.不是关键
2.可以
CGFCB<J即感谢你!!!!