[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 700

 
cyclik33:


我告诉你为什么代码不能正常工作--你把它放在了错误的地方......:)我认为,如果你拧开车轮,把它们放在行李箱里,你不会走远,尽管车轮在那里,门也关着......:)
 
T-G:

这个问题可能是微不足道的,专家顾问在M1上交易,打开订单的信号进来了,让我们假设止损是空的,订单在sl上关闭。但打开订单的条件仍然存在。

有什么办法能确保订单在同一时刻不再被打开?

检查一个新的蜡烛 图的开口。如果是新的,你就打开,如果是旧的,你就不...
 
ToLik_SRGV:

OrderSelect()中的数字计数从零开始。而你有1,这意味着你正在寻找第二个订单,虽然你在市场上只有一个,这就是为什么它不工作。

谢谢,我忘了。
 
ToLik_SRGV:

Boris,代码中的一个小更正,我忘了在返回原始地段时增加重置数组的位置。


我不确定我是否把它放在了正确的位置。 在一次亏损后,它可以打开初始手数,如果这一次也是亏损,它可以再次打开初始手数。

而有时在第一次损失后,需要0.4。

我一定是把什么东西放在了错误的地方?

 
cyclik33:


我有一个非常奇怪的方法来处理这个代码。 在失去一个后,它可能会打开第一手,如果这个人再次失去,它可能会打开第一手。
而有时在第一次损失后需要0.4。
我一定是把什么东西放在了错误的地方?

Boris,代码中的一个小更正,我忘了在返回原始地段时增加重设数组的位置。

//+------------------------------------------------------------------+
double getMartinLot(double lot, double arrayLot[]){//ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if(loop == ArraySize(arrayLot))loop = 0;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if(balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
      loop = 0;
   }else{
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return(save_Lot);
}
//+------------------------------------------------------------------+
 
artmedia70:
我已经告诉你为什么它不能正常工作--你把它放在了错误的地方......:)我认为如果你拧开车轮,把它放在行李箱里,你不会走远,虽然看起来车轮在那里,门也关着......:)


我绝对同意你的观点。但我不是在批评你的代码,我只是说我有一个问题),顺便说一下,我又有一个问题,如果你不介意的话--告诉我哪里错了,我真的想了解我做错了什么。

Extern color colorOpenBuy = Blue;
extern colorCloseBuy = Aqua;
extern colorOpenSell = Red;
extern colorCloseSell = Aqua;


void deinit() {
Comment();
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (! (Hour()>=nFromHourTrade && Hour()<=nToHourTrade){
Comment("交易的时间还没有到来!");
return(0);

我把它粘贴在这里,就像你说的,在函数Start之前,但在编译时它说'Lot' - 初始化预期D:\MetaTraderexperts\Prostoj_2.mq4 (39, 20)

请告诉我这可能是什么。

 
artmedia70:
检查新蜡烛的开口。如果是新的,你就开,如果是旧的,你就不开。
什么是最好的方法?
 
cyclik33:


我绝对同意你的观点。但我不是在批评你的代码,我只是说我有一些问题。 顺便说一下,我还有一个问题,如果你不介意的话--告诉我哪里错了,我真的想知道我做错了什么。

外部颜色 colorOpenBuy = Blue;
外部颜色 colorCloseBuy = Aqua;
外部颜色OpenSell = 红色。
外部颜色 colorCloseSell = Aqua;


void deinit() {
评论(")。
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
如果(lFlagUseHourTrade){
如果(!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)){
评论("贸易的时间还没有到来!")。
return(0);

我按照你说的在这里插入了它,在Start函数之前,但在编译时它说'Lot'--预期的初始化D:\MetaTraderexperts\Prostoj_2.mq4 (39, 20)

请告诉我这可能是什么。

在你的代码中,Lot在哪里被初始化?

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;
extern double Lot = 0.1;
double Lots_New;

void deinit() {
Comment("");
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);

接下来,只有在检查了麋鹿之后,才能像之前写的那样改变Lots_New,或者给它赋值 = Lot。

 

是啊...我对数组感到很困惑...试图用电感数据填充一个数组,这个小函数是一个boo-o-o-o的小僵局......你能告诉我我做错了什么吗?

double      TempIND[50]; 
void   SaveDataIND(double TempIND[], int nBars)
{
   ArrayResize(TempIND,nBars);
   for (int j=0; j<=nBars-1; j++)
      {
         TempIND[j]=iAD(NULL,PERIOD_M5,j);       // ЗДЕСЬ ОШИБКА array item cannot be assigned
         Print("TempIND[",j,"] = ",TempIND[j]);
      }

}

我这样称呼它。

SaveDataIND(TempIND, 20);
问题出在哪里?
 
artmedia70:

是啊...我对数组感到很困惑...试图用电感数据填充一个数组,这个小函数是一个boo-o-o-o的小僵局......你能告诉我我做错了什么吗?

我这样称呼它。

问题到底出在哪里?



你的狗在向函数传递参数 时,如果你像SaveDataIND(double TempIND[])那样传递

double TempIND[ ]实际上是一个新的函数数组,但没有改变参数的权利,尝试SaveDataIND(double& TempIND[])。

原因: