新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 97 1...90919293949596979899100101102103104...1953 新评论 Mikhail Toptunov 2017.01.27 10:36 #961 下午好,先生们!)试图为训练神经网络 准备数据。任务是。有一个矩阵,例如每一行(时间时刻-酒吧)是一个输入向量,而每一列例如是10000。如果有动态数据(行数1,行数2),并且在不同的时间点上数量有变化,该怎么办?例如,一个矩阵被加载到网络中,每一行都是学习的向量,但对于每一行,有n个行数在时间上动态变化。一个可能的解决猜想是给矩阵增加额外的列,相当于动态行的列数,事实证明,每个向量都会有来自denamic的列,但就像一行的列一样,只是假设。比如说 第1矢量 1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 1 1 1 1 1sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"line2 dynamic" 1 1 1 1 1 1解决办法1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 2 2 2 2 2 Vitalie Postolache 2017.01.27 10:57 #962 Top2n:下午好,先生们!)试图为训练神经网络准备数据。任务是。有一个矩阵,例如每一行(时间时刻-酒吧)是一个输入向量,而每一列例如是10000。如果有动态数据(行数1,行数2),并且在不同的时间点上数量有变化,该怎么办?例如,一个矩阵被加载到网络中,每一行都是学习的向量,但对于每一行,有n个行数在时间上动态变化。一个可能的解决猜想是给矩阵增加额外的列,相当于动态行的列数,事实证明,每个向量都会有来自denamic的列,但就像一行的列一样,只是假设。比如说 第1矢量 1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 1 1 1 1 1sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"line2 dynamic" 1 1 1 1 1 1解决办法1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 2 2 2 2 2 而你如何学习一种动态(比如说每小时一次)改变其词汇的语言?这就是神经网络的做法。 Andrei Sokolov 2017.01.27 11:40 #963 Sergey Gritsay:https://www.mql5.com/ru/articles/159 因此,按照我的理解,这就是MQL5。还是相同的? Artyom Trishkin 2017.01.27 12:45 #964 Andrey Sokolov: 因此,按照我的理解,这就是MQL5。还是相同的? 完全一样。 XFaost 2017.01.27 13:52 #965 下午好。我创建了一个EA,工作正常,但如果我在EA运行时关闭终端,再打开终端,EA就会重新开始计数。因此,我有一个问题。我需要在我的EA中写什么,以便它在启动时重置输入参数? Alexey Viktorov 2017.01.27 15:00 #966 XFaost: 下午好。我创建了一个EA,工作正常,但如果我在EA运行时关闭终端,再打开终端,EA就会重新开始计数。因此,我有一个问题。我需要在EA中规定什么,以便它在启动时重置输入参数? 我希望我的专家顾问不重置输入参数,而是收集在它关闭之前打开的订单的信息。 [删除] 2017.01.27 15:09 #967 XFaost: 下午好。我创建了一个EA,它运行良好,但如果我在EA运行时关闭终端,再打开终端,EA就会重新开始计数。因此,我有一个问题。我需要在我的EA中写些什么,以便在我启动它时重置输入参数? 请描述EA的工作方式。也许你需要使用一个不同的原则。如果你仍然需要重置,那么你应该首先定义什么是 "开始时 "的意思。而一般来说,复位是向初始位置的过渡。写下初始设置,并在适当的时候进行设置。 Andrei Sokolov 2017.01.27 22:11 #968 问候。你能告诉我什么是错的吗?EA在价格上方和下方放置带有止损的订单。如果其中一个触发,如果价格远离止损点的幅度超过设定,则调整止损点,如果价格移动到止损点,则不改变。起初,我只写了买入订单,并如愿以偿。如果我为卖出添加一个镜像,无论价格如何变动,止损都会被设定的值所修正。 一般来说,如果分开,或购买或出售--一切都像它应该的那样工作,但两个部分一起--有一个错误。#property copyright "Copyright 2017, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strictextern double Lot = 0.01;extern int StopLoss = 50;extern int Slippage = 5;extern int Delta = 60;extern int Delta2 = 170; extern int Magic = 321;int ticket;double price, sl, sl2;datetime counted_bar = 0;int OnInit() { if (Digits == 3 || Digits == 5) { StopLoss *= 10; Delta *= 10; Delta2 *= 10; } return(INIT_SUCCEEDED); }void OnTick() {////// ПРОДАЖА /////////////////////////////////////////////////////// if (SellLimitCount()==0 && SellCount()==0) { price = NormalizeDouble(Bid - Delta*Point, Digits); sl = NormalizeDouble(price + StopLoss*Point, Digits); ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red); } if (SellCount()!=0) { if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits))) { sl = NormalizeDouble (Bid + StopLoss*Point, Digits); if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok"); else Print ("ERROR_Sell_Order_Modify"); } }if (SellLimitCount()!=0) { if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits))) { if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok"); else Print ("ERROR_BuyLimit_Odrer_Delete"); } } ///////////////////////////////////////////////////////////////////////////////// /////// ПОКУПКА ////////////////////////////////////////////////////////if (BuyLimitCount()==0 && BuyCount()==0) { price = NormalizeDouble(Ask + Delta*Point, Digits); sl = NormalizeDouble(price - StopLoss*Point, Digits); ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue); } if (BuyCount()!=0) { if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits))) { sl = NormalizeDouble (Ask - StopLoss*Point, Digits); if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok"); else Print ("ERROR_Buy_Order_Modify"); } }if (BuyLimitCount()!=0) { if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits))) { if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok"); else Print ("ERROR_BuyLimit_Orde_Delete"); } }/////////////////////////////////////////////////////////////////////////////// }//+------------------------------------------------------------------+int BuyLimitCount(){int count=0; for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){if(OrderMagicNumber()==Magic){if(OrderType()==OP_BUYSTOP) count++;}}}return(count);}int BuyCount(){int count=0; for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){if(OrderMagicNumber()==Magic){if(OrderType()==OP_BUY) count++;}}}return(count);}int SellLimitCount(){int count=0; for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){if(OrderMagicNumber()==Magic){if(OrderType()==OP_SELLSTOP) count++;}}}return(count);}int SellCount(){int count=0; for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){if(OrderMagicNumber()==Magic){if(OrderType()==OP_SELL) count++;}}}return(count);} Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. Vitalie Postolache 2017.01.27 22:15 #969 Andrey Sokolov:问候。你能告诉我什么是错的吗?EA在价格上方和下方放置带有止损的订单。如果其中一个触发,如果价格远离止损点的幅度超过设定,则调整止损点,如果价格移动到止损点,则不改变。起初,我只写了买入订单,并如愿以偿。如果我为卖出添加一个镜像,无论价格如何变动,止损都会被设定的值所修正。 一般来说,如果单独购买或出售,一切都在正常工作,但两个部分一起 - 有一个错误。...你向我们展示的整个代码是一个错误,不是吗?至少,OnTick函数 几乎完全是一个错误... Andrei Sokolov 2017.01.27 22:33 #970 Vitalie Postolache: 一个错误,你是指所显示的整个代码吗? 当代码中有买入和卖出两部分时,那么在挂单 触发后,其止损会因某种原因在任何价格方向上进行修正。而当代码中只有买入或卖出部分时,只有当价格远离它时,止损才会按预期进行修正。 1...90919293949596979899100101102103104...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好,先生们!)
试图为训练神经网络 准备数据。任务是。
有一个矩阵,例如每一行(时间时刻-酒吧)是一个输入向量,而每一列例如是10000。如果有动态数据(行数1,行数2),并且在不同的时间点上数量有变化,该怎么办?
例如,一个矩阵被加载到网络中,每一行都是学习的向量,但对于每一行,有n个行数在时间上动态变化。
一个可能的解决猜想是给矩阵增加额外的列,相当于动态行的列数,事实证明,每个向量都会有来自denamic的列,但就像一行的列一样,只是假设。
比如说
第1矢量
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 1 1 1 1 1
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"line2 dynamic" 1 1 1 1 1 1
解决办法
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 2 2 2 2 2
下午好,先生们!)
试图为训练神经网络准备数据。任务是。
有一个矩阵,例如每一行(时间时刻-酒吧)是一个输入向量,而每一列例如是10000。如果有动态数据(行数1,行数2),并且在不同的时间点上数量有变化,该怎么办?
例如,一个矩阵被加载到网络中,每一行都是学习的向量,但对于每一行,有n个行数在时间上动态变化。
一个可能的解决猜想是给矩阵增加额外的列,相当于动态行的列数,事实证明,每个向量都会有来自denamic的列,但就像一行的列一样,只是假设。
比如说
第1矢量
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 1 1 1 1 1
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"line2 dynamic" 1 1 1 1 1 1
解决办法
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ..."line1 dynamic" 2 2 2 2 2
https://www.mql5.com/ru/articles/159
因此,按照我的理解,这就是MQL5。还是相同的?
下午好。我创建了一个EA,工作正常,但如果我在EA运行时关闭终端,再打开终端,EA就会重新开始计数。因此,我有一个问题。我需要在EA中规定什么,以便它在启动时重置输入参数?
下午好。我创建了一个EA,它运行良好,但如果我在EA运行时关闭终端,再打开终端,EA就会重新开始计数。因此,我有一个问题。我需要在我的EA中写些什么,以便在我启动它时重置输入参数?
问候。你能告诉我什么是错的吗?
EA在价格上方和下方放置带有止损的订单。如果其中一个触发,如果价格远离止损点的幅度超过设定,则调整止损点,如果价格移动到止损点,则不改变。
起初,我只写了买入订单,并如愿以偿。如果我为卖出添加一个镜像,无论价格如何变动,止损都会被设定的值所修正。
一般来说,如果分开,或购买或出售--一切都像它应该的那样工作,但两个部分一起--有一个错误。
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double Lot = 0.01;
extern int StopLoss = 50;
extern int Slippage = 5;
extern int Delta = 60;
extern int Delta2 = 170;
extern int Magic = 321;
int ticket;
double price, sl, sl2;
datetime counted_bar = 0;
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
StopLoss *= 10;
Delta *= 10;
Delta2 *= 10;
}
return(INIT_SUCCEEDED);
}
void OnTick() {
////// ПРОДАЖА ///////////////////////////////////////////////////////
if (SellLimitCount()==0 && SellCount()==0)
{
price = NormalizeDouble(Bid - Delta*Point, Digits);
sl = NormalizeDouble(price + StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red);
}
if (SellCount()!=0)
{
if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Bid + StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok");
else Print ("ERROR_Sell_Order_Modify");
}
}
if (SellLimitCount()!=0)
{
if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Odrer_Delete");
}
}
/////////////////////////////////////////////////////////////////////////////////
/////// ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()==0 && BuyCount()==0)
{
price = NormalizeDouble(Ask + Delta*Point, Digits);
sl = NormalizeDouble(price - StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue);
}
if (BuyCount()!=0)
{
if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Ask - StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok");
else Print ("ERROR_Buy_Order_Modify");
}
}
if (BuyLimitCount()!=0)
{
if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Orde_Delete");
}
}
///////////////////////////////////////////////////////////////////////////////
}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUYSTOP)
count++;}}}return(count);}
int BuyCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUY)
count++;}}}return(count);}
int SellLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELLSTOP)
count++;}}}return(count);}
int SellCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELL)
count++;}}}return(count);}
问候。你能告诉我什么是错的吗?
EA在价格上方和下方放置带有止损的订单。如果其中一个触发,如果价格远离止损点的幅度超过设定,则调整止损点,如果价格移动到止损点,则不改变。
起初,我只写了买入订单,并如愿以偿。如果我为卖出添加一个镜像,无论价格如何变动,止损都会被设定的值所修正。
一般来说,如果单独购买或出售,一切都在正常工作,但两个部分一起 - 有一个错误。
你向我们展示的整个代码是一个错误,不是吗?至少,OnTick函数 几乎完全是一个错误...
一个错误,你是指所显示的整个代码吗?