如何编码? - 页 176

 

Atr decresing代码?

Atr decresing - 什么是代码mql4 ?

--------------------------------------------------------------------------------

Atr decresing

什么是代码mql4?

我希望我的EA不开仓,如果

ATR d1 > ATR d1 (-1)

 

如何编写3级跟踪止损的代码

TrailingStop = 50;

TrailingStop_Over100 =30;

TrailingStop_Over150 = 20;

第1级:0-100点利润 - TS为50点

第二级:101-150点利润 - TS变为30点

第3级:151点以上的利润--TS变为20点

我如何编写这个代码(正方向 移动),以便一旦点子利润增加,TS将改变?

戴夫

<<<

真的很感谢编码员的专业知识。

 

在第一个十字星后设置几个条形距离

嗨,所有的程序员大师们,我是一个mql4编程 的新手,我卡在一个问题上。

因此,它是如下的。

我有2个EMA 5和20 PERIOD_15,分别是PERIOD_H1的5和20 EMA。

因此,当我在第一个十字星PERIOD_M15的时候,如果价格向另一个方向移动并出现反向十字星,顾问会在同一个柱子中立即关闭该位置。这在程序上是正确的,但我的实际问题是等待下一个1-2个或更多的条形图,然后在发现十字星时关闭头寸。

如果这里有相同问题的相关主题,你能给我一个链接吗?

然后版主可以删除该帖子。

谢谢你的帮助!!

--如果你已经有了一个未结头寸

--如果出现过多的交叉盘

--在退出这个头寸之前等待一下

--这应该可以解决在一个柱子中重复出现交叉的问题

如果(firstCross == 1)

{

---------------------------//关闭,检查OpenOrderPrise()之后是否打印了下几个bar-----------------------------------

如果(openbar <= closeebar)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); //关闭位置

return(0); // 退出

}else

return(0);

}

我发现了一些令人毛骨悚然的解决方案 ,我已经附上了。

如果你对时间转移有一些优化的想法,或者对代码有一些优化的想法,我将感谢你的任何建议。

附加的文件:
 

需要您的帮助

嗨,交易者。

如果有人能帮助我为这个指标(MT4-LevelStop-Reverse-vB0-3)开发警报,我将非常感激。

我希望警报能在箭头出现后立即响起。

谢谢。

附加的文件:
 
chiwing:
嗨。

我使用你的lucky v2,并想知道在图表上添加文本的代码,这不是使用对象--标签-->见图~~。

而且用户不能删除文本~~。

文字是这样的--"Your lucky is free and still on developing..."

如何编码?

谢谢

使用命令Comment()

评论 - MQL4 文档

 

如何在图表上编码一些未删除的文本

你好。

我使用你的lucky v2,想知道在图表上添加文本的代码,这不是使用对象--标签-->见图~~。

而且用户不能删除文本~~。

文字是这样的:"Your lucky v2 EA是免费的,而且还在开发中......"

如何编码?

谢谢

附加的文件:
how_to_code.jpg  134 kb
 

多重订单和多重跟踪

在我的Ea中,我使用多个订单,一个是市场订单,另一个是买入/卖出限价订单。

当我像例子中那样得到3个入口时,我希望跟踪开始并一起工作。

举个例子

1个在1.50进入

2.在1.4950进入

在1.4930进入3次

追踪是50点,但我希望在到达1.5050时开始,而不是之前,如果我使用正常的追踪,当价格到达1.5001时,第二笔交易(如果它被填补)开始追踪,但我不希望这样...我希望追踪以50点开始,并在同一价格,所以在1.5050。

那么,保存票据以了解我使用的订单是否更好?

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);

LastClosedBar = Time[0];

RefreshRates();

OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

entratalong= OrderOpenPrice( );

ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //

ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //

[/CODE]

Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!

[CODE]

int TrailStop ()

{

int cnt,result,total=OrdersTotal();

double gain2=Lots_2ingresso;

double gain3=Lots_2ingresso;

int ticket,ticket2,ticket3;

for(cnt = total-1; cnt >= 0; cnt--)

{

RefreshRates();

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))

{

if (OrderType()==OP_BUY && OrderTicket()==ticket )

{

if(Bid - OrderOpenPrice() > Point * TrailingStop )

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

for(cnt = total-1; cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )

result =OrderDelete(OrderTicket());

}

Alert("sta facendo trail");

}

}

}

// trailing 2 parte X pip dopo

if (OrderType()==OP_BUY && OrderTicket()==ticket2)

{

if(Bid - OrderOpenPrice() > Point * Trailing2)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}

// trailing 3 parte X pip dopo

if (OrderType()==OP_BUY )

{

if(Bid - OrderOpenPrice() > Point * Trailing3)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}// fine trailing

 

请改变这个代码 EMA

这是一个优秀的代码。Coders Guru。谁能帮我修改一下。 我需要它只关闭 未完成的交易。我已经创建了一个系统,告诉我什么时候开仓,不想整天坐在电脑前

以关闭交易。 谢谢大家。

 

请修改代码

Calvon:
这是一个优秀的代码,由。Coders Guru。谁能帮我修改一下。 我需要它只关闭未完成的交易。我已经创建了一个系统,告诉我何时开仓,不想为了关闭交易而整天坐在电脑前。 谢谢大家。

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

//| EMA_6_12.mq4 !

编码员 Guru |//|

编码员大师//|外汇TSD|Metatrader指标和专家顾问||

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

#property copyright "Coders Guru" (版权)。

#property link "https://www.forex-tsd.com"

//---- 包括

#include

//---- 交易限制

extern double TrailingStop = 40;

extern double TakeProfit = 1000; //任何大数字

extern double Lots = 1;

extern int Slippage = 5;

//---- 外部选项

extern int CurrentBar = 1;

extern bool UseClose = true;

//--- 指标设置

extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */)

extern int ShortEma = 4;

extern int LongEma = 8;

//--- 全局变量

int MagicNumber = 123430;

string ExpertComment = "EMA_4_8";

bool LimitPairs = false;

bool LimitFrame = false;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // 添加/删除你想限制的paris。

bool Optimize = false;

int NumberOfTries = 5;

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

int init()

{

返回(0)。

}

int deinit()

{

return(0);

}

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

bool isNewSymbol(string current_symbol)

{

//循环所有打开的订单并比较符号

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

string selected_symbol = OrderSymbol();

如果(current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

返回(False)。

}

返回(True)。

}

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

int Crossed()

{

double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode,PRICE_CLOSE,CurrentBar);

double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode,PRICE_CLOSE,CurrentBar);

如果(EmaShortPreviousEmaLongCurrent ) 返回(1); //上升趋势

如果(EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) 返回(2); //下降趋势

返回(0); //其他地方

}

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

int start()

{

int cnt, ticket, total,n;

双重趋势。

if(Bars<100) {Print("bar less than 100"); return(0);}

如果(LimitFrame)

{

if(Period()!=TimeFrame) {Print("This EA is not working with this TimeFrame!"); return(0); }

}

如果(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("This EA is not working with this Currency!"); return(0);}

}

//---交易条件

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false 。

如果(Crossed() == 1 )

BuyCondition = false。

如果(Crossed()==2 )

SellCondition = false。

如果(Crossed()==1)

CloseBuyCondition = true。

如果 (Crossed ()== 1)

CloseSellCondition = true。

total = OrdersTotal();

如果(total < 1 || isNewSymbol(Symbol()))

{

如果(BuyCondition) //<-- 买入条件

{

ticket = OpenOrder(OP_BUY); //<-- 打开BUY订单

CheckError(ticket, "BUY");

return(0);

}

if(SellCondition) //<-- 卖出条件

{

ticket = OpenOrder(OP_SELL); //<-- 打开卖出订单

CheckError(ticket, "SELL");

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

如果(OrderType()==OP_BUY) //<-- 多头仓位被打开

{

如果(UseClose)

{

if(CloseBuyCondition) //<-- 关闭订单并退出!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<--追踪订单

}

if(OrderType()==OP_SELL) //<-- 进入空头状态

{

如果(UseClose)

{

if(CloseSellCondition) //<-- 关闭订单并退出!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<--追踪订单

}

}

}

return(0);

}

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

int OpenOrder(int type)

{

int ticket=0;

int err=0;

int c = 0。

如果(type==OP_BUY)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green) 。

err=GetLastError()。

如果(err==0)

{

休息。

}

否则

{

如果(err==4 || err==137 ||err==146 || err==136) //忙乱错误

{

Sleep(5000);

继续。

}

否则 //正常错误

{

break;

}

}

}

}

如果(type==OP_SELL)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red) 。

err=GetLastError()。

如果(err==0)

{

休息。

}

否则

{

如果(err==4 || err==137 ||err==146 || err==136) //忙乱错误

{

Sleep(5000);

继续。

}

否则 //正常错误

{

break;

}

}

}

}

return(ticket)。

}

bool CloseOrder(int type)

{

如果(OrderMagicNumber() == MagicNumber)

{

如果(type==OP_BUY)

返回(OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet))。

如果(type==OP_SELL)

返回(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet))。

}

}

空白 TrailOrder(int type)

{

如果(TrailingStop>0)

{

如果(OrderMagicNumber() == MagicNumber)

{

如果(type==OP_BUY)

{

如果(Bid-OrderOpenPrice()>Point*TrailingStop)

{

如果(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。

}

}

}

如果(type==OP_SELL)

{

如果((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。

}

}

}

}

}

}

void CheckError(int ticket, string Type)

{

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print(Type + " Order opened : " ,OrderOpenPrice())。

}

否则 Print("错误打开 " + Type + " 订单。", ErrorDescription(GetLastError())。

}

bool AllowedPair(string pair)

{

bool result=false。

for (int n = 0 ; n < ArraySize(LP); n++)

{

如果(Symbol() == LP[n])

{

结果=真。

}

}

返回(结果)。

}