//--------------------------------------------------------------------// globalvar.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------------int Experts; // Колич. экспертовdouble Depo=10000.0, // Заданный депозит
Persent=30, // Заданный процент
Money; // Искомые средстваstring Quantity="GV_Quantity"; // Имя GV-переменной//--------------------------------------------------------------------int init() // Спец. функция init
{
Experts=GlobalVariableGet(Quantity); // Получим тек. знач.
Experts=Experts+1; // Колич. экспертовGlobalVariableSet(Quantity, Experts); // Новое значение
Money=Depo*Persent/100/Experts; // Средства для эксп.Alert("Для эксперта в окне ", Symbol()," выделено ",Money);
return; // Выход из init()
}
//--------------------------------------------------------------------int start() // Спец. функция start
{
int New_Experts= GlobalVariableGet(Quantity);// Новое колич. эксп.if (Experts!=New_Experts) // Если изменилось
{
Experts=New_Experts; // Теперь текущ. такое
Money=Depo*Persent/100/Experts; // Новое знач. средств Alert("Новое значение для эксперта ",Symbol(),": ",Money);
}
/*
...
Здесь долен быть указан основной код эксперта,
в котором используется значение переменной Money
...
*/return; // Выход из start()
}
//--------------------------------------------------------------------int deinit() // Спец. ф-ия deinit
{
if (Experts ==1) // Если эксперт один..GlobalVariableDel(Quantity); //..удаляем GV-переменelse// А иначе..GlobalVariableSet(Quantity, Experts-1); //..уменьшаем на 1Alert("Эксперт выгружен из окна ",Symbol()); // Сообщ. о выгрузкеreturn; // Выход из deinit()
}
//--------------------------------------------------------------------
你说对了。此外,当我们从盒子里取出一个值时,它的类型是double,但如果给出的命令是将结果写入int类型的变量中,编译器会自动采取所有必要的步骤,将该值放入一个新的盒子中。
为了最终确定我的想法是正确的,请查看我对你最后一段的想法......因此,让我们拥有上述的专家。
然后在字符串中。
我们在 "GV-变量 "框中放入一个整数类型的Experts变量进行存储(将其转换为double类型)。那么,如果(假设)在专家顾问中会有一个字符串
int New_Experts=Experts;这意味着有一条命令可以将结果写入一个int类型的变量中。在这种情况下,编译器。
*会把double类型的变量的值取出来。
*对Experts变量的值做任何必要的修改。
*将此值分配给变量New_Experts,并...
*将变量New_Experts的值放入一个 "int "框中。
所以变量类型无非是一些值的外部包装/包装吗,所以GV变量不能是字符串类型,因为降级只允许数字值,而字符串 不会被转换为数字。
对吗?
提前感谢您的答复。
什么不是这样 for (f=1;f<Bars;f++) { Price1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT)Price2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT); Spread = Price1 - Price2; Print ( "Price1="+Price1, " Price2="+Price2);
如果(传播==0){t=f;break;}
} Price12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT); Price22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t) ) / MarketInfo(Symbol_2, MODE_POINT); Spread2 = Price12 - Price22;
如果(MathAbs(Spread2) >= razdvizka && Spread2 < 0) { 打开交易 }
想固定点差等于零的那一栏,并从它开始控制点差
如果(MathAbs(Spread)<eps) { ........},你仍然需要控制结果--是否找到满足条件的点。IMHO,最好是创建一个单独的函数,例如,像这样
你好。
你知道在指标中是否有一个#属性,允许指标总是显示同一时期,例如d1?
即使你在MetaTrader中切换时间框架,它也不会改变?
谢谢
------------------------------------------
哦...有多少个前景.....
帮助!!!!
如何从脚本中调用该指标,我真的需要它在一个窗口中显示。
晚上好!请帮助我对EA代码进行修改。
1.在测试时,一切都很好 - 但在交易时,第一笔交易必须手动打开,停止和采取。我想让EA在价格到达一个新的刻度时自动开始交易。
2.由于在触发止损 的情况下,下一个头寸的开仓量是前一个手数的两倍,手数理论上可以增加到无限大(在我的例子中,最高为51.2),我想限制它(例如0.8),并能够改变阈值。当达到阈值并触发止损时,专家顾问不会断开,而是从0.1重新开始。
请给予帮助。我整天都在挣扎,没有任何帮助。
订单在取货时(Main BAY,作为安全网等待卖出)。
在收盘的时候,在没有损失的情况下,在同一个地方又推迟了。
为了最终确定我的想法是正确的,请查看我对你最后一段的想法......因此,让我们拥有上述的专家。
然后在字符串中。
我们在 "GV-变量 "框中放入一个整数类型的Experts变量进行存储(将其转换为double类型)。那么,如果(假设)在专家顾问中会有一个字符串
这意味着有一条命令可以将结果写入一个int类型的变量中。在这种情况下,编译器。
*会把double类型的变量的值取出来。
*对Experts变量的值做任何必要的修改。
*将此值分配给变量New_Experts,并...
*将变量New_Experts的值放入一个 "int "框中。
所以,变量类型只不过是一些值的外部包装/包吗,所以GV变量不能是字符串类型,因为降级只允许数字值,而字符串不会被转换为数字。
对吗?
提前感谢您的回答。
并非如此。问题是,Experts变量已经具有int类型,因此,类型转换必须在给它赋值之前进行,也就是说,编译器
* 从盒子里取出一个双倍类型 的值(它在你的程序中没有名字,只是被写到主内存或CPU寄存器中编译器知道的某个地址上)。
*对上述变量的值做了所有必要的修改,并将一个新的值(int类型!)写入专家变量中。
*将这个值(int!类型)分配给New_Experts变量。它们具有相同的类型,所以只是将一个值从一个内存位置复制到另一个内存位置的问题。
P.S. 很高兴看到有的人对自己的行为理解得如此详细。事实上,不开玩笑。保持联系。
晚上好!请帮助我对EA代码进行修改。
1.在测试时,一切都很好 - 但在交易时,第一笔交易必须手动打开,停止和采取。我想让EA在价格达到一个新的刻度时自动开始交易。
由于在触发止损的情况下,下一个头寸的开仓量是前一个手数的两倍,手数理论上可以增加到无限大(在我的例子中,最高为51.2),我想限制它(例如0.8),并能够改变阈值。当达到阈值并触发止损时,专家顾问不会断开,而是从0.1重新开始。
试试吧。
大家好。
我有一个脚本,可以关闭所有可用的订单。
我不明白其中的三句话。
如果不难,请把它翻译成俄语,对初学者来说是可以理解的语言。
我学习了教程,但我没有遇到过这么长的逻辑表达。
我所附的脚本。谢谢你。