Extern int S=38; //烛台数,之后将平仓 extern int SL=85; //止损,在任何情况下都将平仓 extern int HIGH=0; //在哪个时间段搜索极值(5或1或0(D1)) extern int l=1; //交易的手数 int massorder[30][30]; //有开放手数的数据 int numb=1; //阵列中el-ta的数量,这是otc。开手 int i=0; int ticket=0; int x=0; double down,up=0; double highH1,lowH1=0。
告诉我如何在这个条件下写一个EA。
有三种货币对,EA将在这些货币对上进行交易,EA只依附于一个图表,在另外两个图表上它自己工作,一般来说是多货币。
第二个条件是当任何货币对的价格达到一定水平时,交易就会开启。每次只能打开一个交易。
一旦交易结束,如果价格接近,专家顾问可以在任何一个交易对重新打开交易。
我设置了一个静态变量,只要该变量的值为false,交易就被允许打开,一旦任何一对订单被打开,该变量的值为true。一旦订单被关闭,for循环找不到任何交易,该变量就会再次取值为false。
例如,如果每个货币对只应开立一个交易,这意味着每个货币对都有自己的变量。
对这个问题是否有更合理的解决办法?
订单中有一个参数,如 "Magik"--只需计算具有某种Magik的订单,并允许或禁止交易。
如何正确地关闭订单,如何收集订单的信息?
我对事先提出的愚蠢问题表示歉意)我写了以下算法:我想在开盘低于分形上升且收盘高于分形上升时建立 买入头寸,在开盘高于分形下降且收盘低于分形下降时建立卖出头寸;我还想在空头85点或在38根蜡烛(const. S)内建立订单时,关闭所有头寸。我感觉根本没有什么被关闭,只有被关闭的订单,总的来说,我感觉我处理订单的方式不对,我的操作不正确,然后我以错误的方式关闭它们))请告诉我如何正确地关闭它们,使它们不会滑落关闭,这个代码中哪里有错误。或者可以作为一个例子,说明nyu如何行走,在其中所有这些操作都做得很充分。提前感谢您的帮助!)
Extern int S=38; //烛台数,之后将平仓
extern int SL=85; //止损,在任何情况下都将平仓
extern int HIGH=0; //在哪个时间段搜索极值(5或1或0(D1))
extern int l=1; //交易的手数
int massorder[30][30]; //有开放手数的数据
int numb=1; //阵列中el-ta的数量,这是otc。开手
int i=0;
int ticket=0;
int x=0;
double down,up=0;
double highH1,lowH1=0。
int start()
{if(Hour()>x)
{
searchH1();
up=highH1;
down=lowH1;
i++;
}
//
if(Open[1]<up && Close[1]>up)//如果蜡烛在开盘时低于分形水平,收盘时也低于分形水平了,那么
{
ticket=OrderSend(Symbol(),OP_BUY,l,Bid,5,Bid-SL*Point,NULL);
i=0;
savedata();
}
if(Open[1]>down && Close[1]<down)//如果蜡烛的开盘价高于收盘价,收盘价低于下跌分形水平,那么
{
ticket=OrderSend(Symbol(),OP_SELL,l,Ask,5,Ask+SL*Point,NULL);
i=0;
savedata();
}
if(i==S)
{
closeAllticket();
closeAllPos();
}
i++;
//----
x=Hour();
if(Hour()==23)
x=-1;
return(0);
}
//+------------------------------------------------------------------+
void closeAllticket()
{
for(int j=0;j<=numb;j++)
{
OrderClose(massorder[j][0],l,Ask,5);
OrderClose(massorder[j][0],l,Bid,5);
}
numb=0;
}
void closeAllPos()
{
for(int j=0;j<=OrdersTotal();j++)
{
OrderSelect(j,SELECT_BY_POS);
OrderClose(OrderTicket(),l,Ask,5);
OrderClose(OrderTicket(),l,Bid,5);
}
}
void searchH1()//寻找分形的函数
{
if(iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,2) &&iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,1) &&&iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,4) &&iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,5) )
highH1=iHigh(Symbol(),PERIOD_H1,3)
if(iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,2) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,1) && iHigh(Symbol(),PERIOD_H1,3) <iHigh(Symbol(),PERIOD_H1,4) &&iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,5))
lowH1=iHigh(Symbol(),PERIOD_H1,3);
return (0);
}
void savedata() //将数据保存到数组的程序{
OrderSelect(ticket,SELECT_BY_TICKET);
massorder[numb][0]=OrderTicket();
massorder[numb][1]=OrderOpenPrice() 。
massorder[numb][2]=OrderStopLoss();
massorder[numb][3]=OrderTakeProfit();
if(OrderType() ==OP_BUY)
massorder[numb][4]=0;
if(OrderType() ==OP_SELL)
massorder[numb][4]=1;
numb++;
}
如何正确地关闭订单,如何收集订单的信息?
我对事先提出的愚蠢问题表示歉意)我写了以下算法:我想在开盘低于分形上升且收盘高于分形上升时建立买入头寸,在开盘高于分形下降且收盘低于分形下降时建立卖出头寸;我还想在空头85点或在38根蜡烛(const. S)内建立订单时,关闭所有头寸。我感觉根本没有什么被关闭,只有被关闭的订单,总的来说,我感觉我处理订单的方式不对,我的操作不正确,然后我以错误的方式关闭它们))请告诉我如何正确地关闭它们,使它们不会滑落关闭,这个代码中哪里有错误。或者可以作为一个例子,说明nyu如何行走,在其中所有这些操作都做得很充分。提前感谢您的帮助!)
在全局变量 中,如果你在开始时已经指定了停止点
在你打开订单之前。
在信号中打开
在EA结束时
我想我没有忘记什么
在全局变量中,你已经在开始时指定了停止的位置
在订单开启之前。
在信号中打开
在EA结束时
就像什么都没有被遗忘
我把你写的东西都放进去了,但是不知道为什么还是没有变化。结果还是和以前一样,现在也是一样,订单保持大量的时间,我需要它们在S条后关闭,这是怎么回事?????????????????。
我把你写的东西都放进去了,但还是没有任何变化。结果是原来是这样,现在也是这样,订单仍然开放了很多时间,我需要它们在S条后关闭,这是怎么回事?????????????????。
叫停订单应该在开盘前进行。 我在关闭时有这些。
在最具全球性的
#include <stdlib.mqh>
我在开单前是这样说的。
而这是在EA的最末端
向专家提问,对于EA有什么标准吗,比如测试的某个时间段内的最低手数?损失的百分比,等等?
我只有2个EA,它们每年做100次交易,另一个总共做30次交易......(时间范围分别为15、30)。盈利能力很好,第一个是在真实报价上的演示,现在正在测试......但谁能告诉我是否有一个更好的......但也许有人会告诉我是否有比MT4更好的测试?
各位行家好))))
有一个指标在最后两个分形上画趋势线,但它是在 "未确认的分形 "之后画的,也就是说,分形之后的第二个条形还没有形成,但线已经画好了。如何使它在第二根柱子之后画出来,而不是在第一根柱子之后?指标在标签中。
各位行家好))))
有一个指标在最后两个分形上画趋势线,但它是在 "未确认的分形 "之后画的,也就是说,分形之后的第二个条形还没有形成,但线已经画好了。如何使它在第二根柱子之后画出来,而不是在第一根柱子之后?指标在标签中。
尝试
尝试