原始想法 - 页 5

 

EA的止损

对不起,我需要的是一个止盈 指令。我不知道如何编码,但我想为这个EA添加一个止盈。再次感谢

External double MaximumRisk =0.02; //%account balance to risk per position

extern double DecreaseFactor =3; //连续亏损期间的手数除数(减数)。

extern double Lot.Margin =50; //1手的利润率

外置 int Magic =69;

外部字符串 comment ="m icwr ea";

double spread; spread =Ask-Bid;

int slip; slip =spread/Point;

int RequiredWaveHeight,b,s,cnt,ticket;

double rsi,SL,ICWR,ICWRv0,awp1,awp2,active.high,active.low,high.c,high.r,low.r,low.c。

datetime awt1,awt2,a.high.shift,a.low.shift,shift。

int init(){return(0);}

int deinit(){return(0);}。

int start(){

PosCounter()。

rsi=iRSI(Symbol(),1440,14,PRICE_CLOSE,0)。

if(Period()==5) {RequiredWaveHeight=40;SL=50*Point;}。

if(Period()==240) {RequiredWaveHeight=150;SL=100*Point;}

ICWR=iCustom(Symbol(),Period(), "ICWR",10,5,3,RequiredWaveHeight,0,0)。

ICWRv0=iCustom(Symbol(),Period(), "ICWR v0", "ZigZag",10,5,3, "ActiveWave",50,RequiredWaveHeight,0,0)。

awt1=ObjectGet("Activewave",OBJPROP_TIME1)。

awp1=ObjectGet("Activewave",OBJPROP_PRICE1);

awt2=ObjectGet("Activewave",OBJPROP_TIME2);

awp2=ObjectGet("Activewave",OBJPROP_PRICE2)。

如果(awp1>awp2) {

active.high=awp1;

a.high.shift=iBarShift(Symbol(),Period(),awt1)。

active.low=awp2;

a.low.shift=iBarShift(Symbol(),Period(),awt2); }

否则 {

active.high=awp2;

a.high.shift=iBarShift(Symbol(),Period(),awt2)。

active.low=awp1;

a.low.shift=iBarShift(Symbol(),Period(),awt1);}.

如果(a.high.shift<a.low.shift) shift=a.high.shift。

否则shift=a.low.shift。

high.c=NormalizeDouble(active.low+((active.high-active.low)*0.75),Digits)。

high.r=NormalizeDouble(active.low+((active.high-active.low)*0.618),Digits)。

low.r=NormalizeDouble(active.low+((active.high-active.low)*0.382),Digits)。

low.c=NormalizeDouble(active.low+((active.highactive.low)*0.25),Digits)。

如果(rsi>50) {

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

if(Closelow.r && Low[1]>high.c && b==0) {

ticket1=OrderSend(Symbol(),OP_SELL,1.0,Bid,0,Bid+20*Point,Bid-30*Point, "专家评论",255,0,CLR_NONE)。

OP_BUY,

LotsOptimized(),

询问。

滑。

Ask-SL。

0,

Period()+comment,

Magic,0,Blue)。

如果(ticket>0) {

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{ Print(ticket); }

否则 Print("Error Opening BuyStop Order:",GetLastError())。

return(0);}}}}

如果(rsi<50) {

for(int ii=0;ii<shift;ii++) {

如果(Closelow.r && High[1]<low.c && s==0) {

ticket=OrderSend(Symbol(),

OP_SELL,

LotsOptimized(),

竞价。

滑动。

Bid+SL。

0,

Period()+comment,

Magic,0,Orange)。

如果(ticket>0) {

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{ Print(ticket); }

否则 Print("错误打开SellStop订单。",GetLastError())。

return(0);}}}}

if(b>0) {

for(int c=0;c<shift;c++) {

如果(High[1]<low.c) {

OrderClose(ticket,OrderLots(),Bid,slip,0);}} } }

如果(s>0) {

for(int cc=0;cc<shift;cc++) {

如果(Low[1]>high.c) {

OrderClose(ticket,OrderLots(),Ask,slip,0);}} } }

评论()。

return(0);}

//+---------------------------FUNCTIONS------------------------------+

空白PosCounter() {

b=0;s=0;ticket=0。

for(cnt=0;cnt<=OrdersTotal();cnt++) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {

如果(OrderType()==OP_SELL) {

ticket=OrderTicket()。

s++;}

如果(OrderType()==OP_BUY){

ticket=OrderTicket();

b++;}}}}

空白评论() {

if(MarketInfo(Symbol(),MODE_SWAPLONG)>0) string swap="longs.";

否则swap="短线。"。

如果(MarketInfo(Symbol(),MODE_SWAPLONG)<0 && MarketInfo(Symbol(),MODE_SWAPSHORT)<0) swap="你的经纪人。 ";

Comment("Last Tick:",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),"/n"。

"Swap favors" ,swap,"/n",

"Daily RSI= ",rsi,"/n",

"Active High: ",active.high,"/n",

"高点转移。",a.high.shift,"\n",

"高电平确认。",high.c,"\n"。

"高位回溯。",high.r,"\n",

"Low Retrace:",low.r,"\n",

"Low Confirmation:",low.c,"\n",

"Active Low: ",active.low,"\n",

"Low shift:",a.low.shift); }

double LotsOptimized() {

double lot;

int orders=HistoryTotal();

int losses=0;

lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/Lot.Margin,2)。

如果(DecreaseFactor>0) {

for(int i=orders-1;i>=0;i--) {

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史中的错误!"); break; }

如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。

if(OrderProfit()>0) break;

如果(OrderProfit()<0) 损失++; }

如果(损失>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2); }

如果(lot<0.01) lot=0.01;

return(lot); }//end LotsOptimized

 

不介意...

内疚...不知为何

我下载了TEMPLATE catfx,它都显示出来了......

我不知道

 

快速的问题...INDinverse给你什么数据?

我有这个图,但似乎无法解读它告诉我什么信息。

我做了一个搜索,但没有找到描述。

谢谢你的支持

附加的文件:
 

新图表禁用了EA?

你好。

(这是个很好的论坛,我很快就会有东西可以分享!)

我正在玩CodersGuru的MQL4课程中的 "你的第一个专家顾问 "例子。

我注意到一个问题,我希望有一个解决方案......在30M图表上加载EA后...它打开了一个(空头)订单。我修改了他的代码来测试我的退出策略(在一个较低的时间段内的简单交叉)...

横盘来了又走了(打印状态,我的代码是正确的),但是,当时我在15M图表上...这是否意味着我取消了EA(所以我的代码/逻辑没有运行)?

如果是这样,是否有办法解决这个问题......我想来回点击其他时间段......而又不使正在运行的EA失效。

谢谢你的回答。

-charliev

 

系统的有效性与它的用户增长成正比?

你们认为,一个系统会随着应用它的人越来越多而获得或失去其有效性吗?

似乎许多成功的交易者通常不会分享他们的交易策略,所以他们这样做一定有原因。有人想破解这个问题吗?

 
TheShanghai:
你们是否相信一个系统会随着应用它的人越来越多而获得或失去其有效性?似乎许多成功的交易者通常不会分享他们的交易策略,所以他们这样做一定是有原因的。有人想破解这个问题吗?

我听说过这样一个观点:许多成功的交易者通常不分享他们的交易策略,或者特别是分享一些错误的策略。可能是这样。我不知道。因为外汇是钱。我认为这并不是什么有效的方法。这是因为没有那么多成功的交易员,这是与经纪人有关的事情。

BTW,我认为这是个人问题。一个交易员可以使用一些交易策略,而我不能,因为我的性格、习惯、时区等等。所以这是个人问题。无论如何,我们可以发现所有的策略,就像我们在论坛上已经做的那样。

 

谢谢你的反馈。我会记住这一点。

 

跟随潮流

你好。

我有一个简单而稳定的系统,对我很有效。我利用收盘时的34 EMA。RSI 7收盘。CCI 20收盘。把EMA放在图表上,看一下趋势。从30M开始,一直移动到H4甚至D1。EMA的趋势必须在所有的时间框架内都是一样的。如果趋势是正确的,你可以进入交易,如果RSI在D1时间框架上高于/低于50,CCI高于/低于100。当交易开始时,请停留在H4图表上,它使你看不到市场上的噪音,并让你在时间之前关闭。在80点处设置止损。你也可以使用斐波纹来查看市场是否有回调。我喜欢用等距通道(一种metatrader标准工具)来寻找市场趋势。我一直保持这个趋势,直到我赚取利润。这种方法并不是万无一失的,但有一点是肯定的,而且对我来说每天都有更多的意义,那就是我没有在主要趋势下进行交易。

请在演示中试验这个方法,让我们建立一个长期的系统,以形成更严肃的交易员。

罗兹

 

当数组被声明时的默认值

大家好。

在这个数组中,什么值是作为默认值。

double ARRAYA[];

double ARRAYB[];

我想通过以下操作来清除这些数组的全部内容。

ArrayInitialize(ARRAYA,NULL)。

ArrayInitialize(ARRAYB,NULL)。

但是,设置为NULL 会导致数组被填充为0(零)。

有什么建议吗?

-charliev

 

指标#包括在EA中?

大家好。

有什么方法可以#包括一个已编译的指标,使其在EA加载时加载?(使EA成为独立的1个.EX4文件?)

谢谢你的帮助!

-charliev