如何编码? - 页 313

 

你好。

是否可以用代码只修改当前活动图表符号的买单或卖单

这对我使用WindowsPriceonDropped函数打开订单的脚本将非常有用。

谢谢你

 

...

dasio,

试试这样的方法。

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

// do the proccessing you wish here

}

}

dasio:
你好。

是否可以用代码只修改当前活动图表符号的买单或卖单?

这对我使用WindowsPriceonDropped函数打开订单的脚本将非常有用。

谢谢你
 

谁想挑战一下?

我需要一些代码来完成以下工作,见所附截图。这将是购买交易。

我已经尝试了一个for循环,一个混乱的if条件,都没有产生我想要的结果。

这看起来很简单,但我无法让它工作。

附加的文件:
maexample.jpg  54 kb
 

你的输入条件可以写成类似这样。

double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
我需要一些代码来完成以下工作,见所附截图。这将是买入交易。

我已经尝试了for循环和一些乱七八糟的if条件,但都没有产生我想要的结果。

它看起来很简单,但我无法让它工作。
 
mladen:
你的输入条件可以写成类似这样。
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

你发布的代码会给我横跨移动平均线 的柱子的信号。但是我还需要一种方法,可以在跨度条之后的任何条上进入交易,只要不超过MA+5条就可以。我不在跨栏杆上发出买入信号的原因是有另一个指标必须显示为真值,在跨栏杆上可能不是真值,但如果它在跨栏杆后5栏以内的任何栏杆上是真值,并且没有超过MA+5的限制,我仍然可以进行交易。我不是要做多笔交易,只是在每个设置中做一笔。

以下是我到目前为止的情况。在这一点上,我只在符合条件的柱子下面用箭头标记,只买入。一旦我解决了这个问题,我就会把我的代码放进去以执行订单。我知道这看起来很简单,但除非我错过了一些明显的东西,否则并不简单。

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

double Poin;

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

//| Custom initialization function |

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

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

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

// +

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

int deinit(){

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

在这个截图中,你需要在第4条终止交易,因为第3条超过了MA+5的限制,这意味着在第4条你需要检查 第3条是否超过了MA+5的限制,它确实超过了,所以这个交易设置就结束了。

这里所有的5个小节都是合格的,因为它们都没有超过MA+5的限制。

附加的文件:
 

在这个截图中,你需要在第4条终止交易,因为第3条超过了MA+5的限制,这意味着在第4条你需要检查 第3条是否超过了MA+5的限制,它确实超过了,这就是这个交易设置的结束。

这里所有的5个小节都是合格的,因为它们都没有超过MA+5的限制。

 

...

cyber1

在你的例子中,就我看来,为了能够像你描述的那样中止,你还必须知道未来(因为在 "中止 "条形图之前,规则是适用的,并且会返回一个走势信号)。

另一方面,如果你试图测试所有的条形图,以获得进入的条件,最终你将总是有一个 "规则的破坏",将无法进入该位置。

cyber1:
在这个截图中,你需要在第4条终止交易,因为第3条超过了MA+5的限制,这意味着在第4条你需要检查第3条是否超过了MA+5的限制,它确实超过了,这就是这个交易设置的结束。

这里所有的5个柱子都符合条件,因为它们都没有超过MA+5的限制。

 

关闭所有公开交易的EA

谁能帮我做这个EA?

这个EA将在达到目标利润和损失时关闭所有未结的交易对。

当它关闭所有的交易时,然后开始监控已开的交易。

我有一个限制人才来做这个。

这个EA与每个交易对的主EA分开。

 

信号和阻力/支撑dinamyc线。

你能帮我把这个指标翻译成MT4语言吗?

a:=(hhv(close,tpr)+llv(close,tpr)+close)/3;

b:=(a1*2)-hhv(close,tpr)。

移动b:=mov(b,tpr,simple)。

c:=(a1*2)-llv(close,tpr);

移动c:=mov(c,tpr,simple);

d:=(hhv(close,tpr/2)+llv(close,tpr/2)+close)/3;

移动d:=mov(d,tpr/2,simple)。

stream:=(b+c+d)/3;

移动流:=mov(stream,tpr,simple)。

hhv=最大周期值(所选时间段内收盘价 的最高值)。

llv=最小周期值(所选时间段内收盘价的最低值)。

tpr=时间段(从1到任何你想要的)。

mov=移动平均线。

输出必须有 "流 "和 "移动流"!即使它还有 "b"、"移动b"、"c"、"移动c"、"d "和 "移动d",也不是什么坏事!

谢谢。

这个论坛是伟大的......

Lucmat

附加的文件:
immagine.jpg  258 kb