[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 313

 
hoz:

如何使之成为当一个趋势 参数被传递给这个函数时,它将负责转移此刻假定的主要趋势,计算将以这个参数为基础。

也就是说,如果趋势==向下,循环中的函数就像现在这样,如果趋势==向上循环中 Open[i]Close[i] 被调换,这样就可以观察到条件。因为在这种情况下,条形图的收盘价将低于开盘价,其差额将为负值。


bool trend;

if ((2*trend-1)*Δ=>const) cnt++;
if ((2*trend-1)*Δ<const) cnt=0;
在这种情况下,2*趋势-1的值为+1和-1,即如果趋势=真,它将上升,趋势=假,它将下降,而Δ将分别以正确或错误的符号取值这只是一个例子,说明数学取代了如果。
 

gyfto,套件中的测试脚本对你有用吗?

我也会这样做。

//в шапке
#include <SharedMemoryMT4.mqh>
//в инит. Создание и открытие не обязательно. Эти функции для ускорения работы с памятью.
MemoryCreate(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
// Вариант более быстрый, чем выше:
MemoryCreateProjection(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));

//в деинит
MemoryCloseName(1, "", "ind");
//в старт вместо 
for(; i<Σ; i++) MemoryWriteInt(1, "", -1, "ind", i * 4, iBars(sn, 1));//ind[i]=iBars(sn, 1);
#property show_inputs
#include <SharedMemoryMT4.mqh>
extern int x;//сколько секунд назад с данного момента прикрепления смотрим значения TOLHCV

int init()
  {
//   MemoryOpen(1, "", -1, "ind"); // Это не требуется.
   return(0);
  }
int start()
  {
   //MemoryReadInt(1, "", -1, "ind", i) это ind[i], GlobalVariableGet("final") это последний элемент в массиве, а ф-ла выглядит так: n=ind[final]-ind[final-x]+1
   int n=MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final"))-MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final")-x)+1;
   Alert(TimeToStr(TimeCurrent(),TIME_SECONDS), ": Time=", TimeToStr(Time[n], TIME_SECONDS), ", Open=", Open[n], ", High=", High[n], ", Low=", Low[n], ", Close=", Close[n], ", Volume=", Volume[n]);
   return(0);
  }

其余的都是正确的。没有进入数据传输协议而已。

创建、打开和分配内存 是可选的。这些函数是为了加快内存处理速度。对于最简单的库操作 ,你只需要读和写函数。图书馆会做其他事情。此外,你可以先读后写。要求的大小的内存将被分配,该函数将返回0。因为那里还没有什么。

 

Zhunko,我想不是。Comment() 不输出,它只在日志中写,在日志中写。

15:51:13 Check_SharedMemoryMT4.dll AUDUSD,M1 inputs: Area=1; InitPrefix=""; UserGlobal=25; UserTerminal=50; UserWindow=100; CheckWriteRead=false; CheckWrite=false; CheckRead=false; CheckGeneral=false
CheckProjection=false; CheckClose=false; NamePrefix="Check"; NameMemory0="CheckMemory0"; NameMemory1="CheckMemory1"; NameMemory2="CheckMemory2"; NameMemory3="CheckMemory3"; NameMemory4="Memory4"
Index=-1; StartByte=0; MemorySize=64000; bValue=true; cValue=123; ucValue=255; shValue=32100; ushValue=65535; nValue=2147012345; fValue=1234.56789012; dValue=1234.56789012; sValue0="Контроль = 1234.56789"
sValue1="Контроль = 9876.54321"; sValue2="Привет мир!!!"; sValue3="Миру мир!"; sValue4="Неправильное  имя";

它都在一行,我把它移到这里,所以这里没有异常的屏幕宽度。

 
gyfto:

Zhunko,我想不是。Comment()不输出,它只在日志中写,在日志中写。

它都在一行,我把它移到这里,所以这里没有异常的屏幕宽度。

看一下视频。做到完全一样。如果不成功,我们会想办法的。这对我来说很有效。
 
我可能即将赢得一个最愚蠢的错误比赛。我没有声明ADXBars GV变量,所以我写了 "方法错误"。另外,在国际边界上也没有对齐。但警报仍然输出所有的零,不管有没有对齐。我会看视频,先自己试着弄清楚。如果我失败了,我们就一起想办法解决。
 

TarasBY artmedia70 hoz

谢谢各位警官!"。

 
CYBOPOB:

TarasBY artmedia70 hoz

谢谢各位警官!"。

你向自己开枪了吗?:)))
 
artmedia70:
什么,你向自己开枪?:)))


两次 8-[
 

你好!请帮助我解决这个问题。

https://www.mql5.com/ru/forum/144634

非常感谢您!

 

我自己也得到了这个该死的错误。事实上,根本就没有什么逻辑。根据https://book.mql4.com/ru/appendix/limits, 要开立挂单 开盘价应低于买入价(用于卖出)或高于卖出价(用于买入)。我正在按要求做。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);

   if (ND(OOP) > Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
       lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

我不时地得到0130 的错误。虽然130 是一个错误的止损,这可能发生在修改过程中,但不是在开单时。

在截图中,使用pr 功能显示的情况和打印。

错位停顿错误

请告知如何摆脱这个错误。我真的厌烦了这个错误。从逻辑上讲,它根本不在这个问题上。