int x=0;
int scale_mas[13]={0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096};//объявление массива
for(int i=0;i < ArraySize(scale_mas);i++){
if(x == scale_mas[0])x = scale_mas[1]; //если х=индекс0, то х=индекс1
if(x >= ArraySize(scale_mas))x = scale_mas[11]; //если х>= размер массива, то х=индекс11
i=x;
if(ObjectGetInteger(0, "Button+", OBJPROP_STATE) == false){ //если кнопка "+" нажата
i=i+1; //увеличиваем индекс на 1
ObjectSetInteger(0, "Button+", OBJPROP_STATE,true);}
x=i; //присваиваем х значение последнего индекса
if(ObjectGetInteger(0, "Button-", OBJPROP_STATE) == false){ //если кнопка "-" нажата
i=i-1; //уменьшаем индекс на 1
ObjectSetInteger(0, "Button-", OBJPROP_STATE,true);}
x=i; //присваиваем х значение последнего индекса
ObjectSetString(0,"=TrendLine",OBJPROP_TEXT,scale_mas[x]);}} //выводим результат scale_mas[x]
Ivan Revedzhuk: 昨天我写了这段代码,它似乎在正常工作,但只有当我用加号按钮到达数组的顶端值时,它才会重置到数组的开头,并再次向上移动数组。我可以在代码中添加或修正什么,以便当它达到数组的顶部值时,进一步点击加号按钮将停止在顶部索引,并且不会重置到数组的底部?或者可以用其他方式简化代码,以实现这种点击按钮的想法?
if(x >= ArraySize(scale_mas))
ArraySize(scale_mas)-1; //если х>= размер массива, то ....
昨天我写了这段代码,它似乎在正常工作,但只有当我用加号按钮到达数组的顶端值时,它才会重置到数组的开头,并再次向上移动数组。我可以在代码中添加或修正什么,以便当它达到数组的顶部值时,进一步点击加号按钮将停止在顶部索引,并且不会重置到数组的底部?或者可以用其他方式简化代码,以实现这种点击按钮的想法?
可能是这样。
我想是的。
也试过了,效果一样
也试过了,效果一样
我没有马上注意到,这个周期是为了什么?
我没有马上注意到,但这个循环是为了什么?
有什么办法可以不这样做吗?我只是不知道什么是最好的,我只是在做我认为合理的事情。
有什么办法可以不这样做吗?我只是不知道什么是最好的,做我认为合理的事情。
那么,逻辑一定是不同的。按 "+"按钮可以增加数组的索引。达到最大值时,它不会增加,而是保持在最大值。按下按钮--指数下降。达到0,对按压没有反应,保持在指数0上。
还是有其他的想法?
PS; 又是谁贴出了用旗子工作的例子,来回应这个问题并删除了它?你为什么要删除它?毕竟,这确实是一个解决男人问题的好办法。为什么他需要一个有限的阵列?那么,逻辑一定是不同的。按 "+"按钮可以增加阵列的索引。达到最大值时,它不会增加,而是保持在最大值。按下按钮--指数下降。到达0,没有反应,停留在索引0。
还是有其他的想法?
PS; 又是谁贴出了用旗子工作的例子,来回应这个问题并删除了它?你为什么要删除它?毕竟,这确实是一个解决男人问题的好办法。为什么他需要一个有限的阵列?不,这正是我的想法。我真的不知道如何正确地做,所以我按我得到的方式做了。但我注意到,当循环在程序中运行时,直到按图表上的按钮来点击循环,其他一切都不能工作。好像一切都暂停了。我不明白为什么会发生这种情况,如果有任何变体可以以不同的方式实现这个想法,我将不胜感激......
就这样了。问题就解决了),没有数组和其他东西。结果是更简单的))))。
第二个问题出现了。如何在代码中设置警报 触发级别,当通过鼠标的上下文菜单设置警报时,会出现设置箭头?
请帮助一下,有没有可能给这个EA增加一个功能,使EA在窗口EURUSD中设置的交易,在同一时间打开相同的参数,但对GBPUSD,EURUSD不会打开。
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| 开发者。姆纳耶夫-安德烈|
//| 专家顾问:随机性。mq4|
||网站:安全-外汇。||网站:安全-外汇。|
//|邮件。minaev.work@mail.ru|
//| Skype: live:minaev.工作|
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "Safe-Forex.ru"
#属性链接 "https://safe-forex.ru"
#属性严格
外部 bool Use_Symbol1 = true。
外部字符串 Symbol1 = "USDJPY";
输入字符串 settings = ""; // Expert Advisor设置
输入的int magic = 111; // 输入magic
输入 double fixVolume = 0.01; // Volume
输入 int takeProfit = 500; // 利润
输入 int stopLoss = 500; //Loss
输入int buyLevel = 100; // 输入int buy Level
输入 int sellLevel = 0; // 75 卖出水平
外部int ADXperiod = 15; //ADX周期15
外部int ADXLevel =1;
外部int MAperiod =360; //MA周期80
外部int MAperiod_2 =360; //MA周期80
输入字符串 stochSettings = ""; // Stochastic Oscillator指标设置
输入 int stochPeriodK = 5; //period %K
输入 int stochPeriodD = 3; //period %D
Input int stochSlowing = 3; // Slowing down
输入ENUM_STO_PRICE stochPrice = STO_LOWHIGH; // 价格
输入ENUM_MA_METHOD stochMethod = MODE_SMA; // 方法
datetime newCandle; // 当前图表上的新蜡烛。
bool allowOpenBuy; // 允许打开买入头寸。
allowOpenSell; // 允许打开卖出头寸
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
int OnInit(void)
{
返回INIT_SUCCEED。
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
空白的OnTick(void)。
{
if(newCandle!=Time[0]) CheckSignalExist(); newCandle=Time[0];
如果(allowOpenBuy)OpenPosition(OP_BUY)。
如果(allowOpenSell)OpenPosition(OP_SELL)。
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| 函数在当前价格开仓|
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
空白的OpenPosition(int type)。
{
双倍价格=0.0。
如果(type==OP_BUY) price=Ask;
如果(type==OP_SELL) price=Bid;
int ticket=OrderSend(_Symbol,type,fixVolume,price,0,0," ,magic,0)。
// int ticket=OrderSend(,type,fixVolume,price,0,0,0," ,magic,0)。
睡眠(1000)。
如果(ticket>0)
{
如果(type==OP_BUY)
{
打印("买入仓位打开,票据:",票据)。
allowOpenBuy=false。
// SetStopOrders(ticket)。
}
如果(type==OP_SELL)
{
打印("卖出头寸已开,票据:",票据)。
allowOpenSell=false。
// SetStopOrders(ticket)。
}
}
如果(ticket<0)
{
如果(type==OP_BUY) Print("买入位置没有打开,错误:",GetLastError())。
如果(type==OP_SELL) Print("Sell position didn't open, error: " ,GetLastError());
}
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//|函数设置止损单|
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//void SetStopOrders(int ticket)
//{
// double stopLevel=MarketInfo(_Symbol,MODE_STOPLEVEL)。
//传播 =MarketInfo(_Symbol,MODE_SPREAD)。
// tp =takeProfit。
// sl =stopLoss。
// stopLevel+=spread。
// if(tp<stopLevel)
// {
// tp=stopLevel。
// Print("利润集的最小距离")。
// }
// if(sl<stopLevel)
// {
// sl=stopLevel。
// Print("损失集的最小距离")。
// }
// if(OrderSelect(ticket,SELECT_BY_TICKET))
// {
// int type=OrderType()。
// double opp =OrderOpenPrice();
// if(type==OP_BUY) {tp=opp+tp*_Point; sl=opp-sl*_Point;}
// if(type==OP_SELL) {tp=topp-tp*_Point; sl=opp+sl*_Point;}
// if(OrderModify(ticket,opp,sl,tp,0))
// {
// if(type==OP_BUY) Print("P&L levels set for Buy position, ticket: " ,ticket);
// if(type==OP_SELL) Print("卖出头寸的损益水平已被设定,票据:",票据)。
// }
// 否则 {
// if(type==OP_BUY) Print("买入头寸的损益水平未被设置,ticket: ",ticket," error: ",GetLastError())。
// if(type==OP_SELL) Print("卖出头寸的损益水平未被设置;ticket: ",ticket," error: ",GetLastError();
// }
// }
//}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| 函数检查是否有信号存在|
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
空白 检查信号是否存在(void)
{
double ADX1=iADX(Symbol(,Period(),ADXperiod,0,MODE_MAIN,1); ////////////////////////////
double ADX2=iADX(Symbol(),Period(),ADXperiod,0,MODE_MAIN,2)。
double DPLUS=iADX(Symbol(),Period(),ADXperiod,0,MODE_PLUSDI,1)。
double DMINUS=iADX(Symbol(),Period(),ADXperiod,0,MODE_MINUSDI,1)。
double MA=iMA(Symbol(),Period(),MAperiod,0,MODE_SMA,0,1)。
double MA_2=iMA(Symbol(),Period(),MAperiod_2,0,MODE_SMA,0,1)。
//PERIOD_H1
double mainLine1=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_MAIN,1) 。
mainLine2=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_MAIN,2) 。
signLine1=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_SIGNAL,1) 。
signLine2=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_SIGNAL,2) 。
评论(" ", (Ask-Bid)/1.5," ", Bid-Close[1], " ", Ask-Close[1])。
// if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel)
//& iClose(Symbol(),Period(),1)>MA& iClose(Symbol(),Period(),1)>MA_2 && signLine1<buyLevel && signLine2<buyLevel
if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel)
//&Close[2]<MA& Close[2]<MA_2 && signLine1<buyLevel && signLine2<buyLevel
&&Close[10] > Close[1]-(Close[1]-Close[20] )
&& Close[10]>Bid )
{
Print("出现了一个开立买入头寸的信号")。
如果(GetPositionsNumber()==0)
{
// allowOpenSell=true。
{ allowOpenBuy=true;
睡眠(1000)。
Print("允许开立买入头寸")。
}
}
// if(mainLine1<signLine1 && mainLine2>signLine2 && mainLine1>sellLevel && ADX1>ADXLevel && mainLine2>sellLevel
//& iClose(Symbol(),Period(),1)<MA& iClose(Symbol(),Period(),1)<MA_2 && signLine1>sellLevel && signLine2>sellLevel
if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel)
//&Close[2]>MA& Close[2]>MA_2 && signLine1<buyLevel && signLine2<buyLevel
&&Close[10] < Close[1]+(Close[20]-Close[1])
&& Close[10]<Ask )
{
Print("出现了一个卖出头寸的信号")。
如果(GetPositionsNumber()==0)
{
// allowOpenBuy=true。
allowOpenSell=true。
睡眠(1000)。
Print("允许打开卖出头寸")。
}
}
}
/////////////////////////////////////////
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| 该函数返回未平仓头寸的数量。|
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
int GetPositionsNumber(void)
{
int number=0。
for(int i=0; i<OrdersTotal(); i++)
如果(OrderSelect(i,SELECT_BY_POS))
如果(OrderSymbol()==_Symbol && OrderMagicNumber()==magic)
号码++。
返回编号。
}
//+---------------------------------------------------------------------------------------------------------------------------------
帮助一下,有没有可能给这个EA增加一个功能,使安装在欧元兑美元窗口的EA在同一时间以相同的开仓参数开仓,但在英镑兑美元上开仓,而不在欧元兑美元上开仓。
对不起,你的头还好吗?你不仅在一个地方插入了代码,而且还留下了大量的空行。
你不觉得你应该对你请求帮助的人有一些尊重吗?