//--- counting from 0 to rates_totalArraySetAsSeries(ExtLineBuffer,false);
ArraySetAsSeries(close,false);
//--- first calculation or number of bars was changed
int Ticket1_RSI=-1, Ticket2_RSI=-1; // Номера открытых ордеровexterndouble Lot=0.01; // Объем лотаint RSI() // Функция RSI
{
double T, P;
double RSI_0, RSI_1, RSI_2; // Значения индикатора RSI//------------------Значения индикатора---------------------------------------
RSI_0=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 0); // Получаем данные от RSI
RSI_1=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 1); // Получаем данные от RSI
RSI_2=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 2); // Получаем данные от RSI //------------------Условие на продажу--------------------------------- if (RSI_1 > RSI_0 > 70 && RSI_1 > RSI_2) // Если индикатор превышает значение 70 и виден поворот вниз
{
if (Ticket2_RSI > 0) // Если имеется ордер на покупку
OrderClose(Ticket2_RSI, OrderLots(), Bid, 0, 0); // Закрытие ордера на покупкуif (Ticket1_RSI <= 0) // Если ордера на продажу нет
{
Ticket1_RSI=OrderSend(Symbol(), OP_SELL, Lot, Bid, 2, 0, 0); // Открытие ордера на продажуif (OrderSelect(Ticket1_RSI, SELECT_BY_TICKET)==true)
{
T=OrderOpenTime();
P=OrderOpenPrice();
ObjectCreate("Arrow", 22, 0, T, P); // Создание индикатора ордера
ObjectSet("Arrow", OBJPROP_COLOR, IndianRed); // Изменение цвета в мутно-красноватый
ObjectSet("Arrow", OBJPROP_ARROWCODE, 242); // Направление стрелки внизObjectCreate("Text", 21, 0, T, P); // Создание текстового объекта
ObjectSetText("Text", "Open sell-order by RSI", 6, "Times New Roman", Navy); // Текст, шрифт, стиль, цвет
}
}
}
//-------------------Условие на покупку-------------------------------- if (RSI_1 < RSI_0 < 30 && RSI_1 < RSI_2) // Если индикатор ниже значения 30 и виден поворот вверх
{
if (Ticket1_RSI > 0) // Если имеется ордер на продажу
OrderClose(Ticket1_RSI, OrderLots(), Ask, 0, 0); // Закрытие ордера на продажуif (Ticket2_RSI <= 0) // Если ордера на продажу нет
{
Ticket2_RSI=OrderSend(Symbol(), OP_BUY, Lot, Ask, 2, 0, 0); // Открытие ордера на покупкуif (OrderSelect(Ticket2_RSI, SELECT_BY_TICKET)==true)
{
T=OrderOpenTime();
P=OrderOpenPrice();
ObjectCreate("Arrow", 22, 0, T, P); // Создание индикатора ордера
ObjectSet("Arrow", OBJPROP_COLOR, LawnGreen); // Изменение цвета в ярко-зеленый
ObjectSet("Arrow", OBJPROP_ARROWCODE, 241); // Направление стрелки вверхObjectCreate("Text", 21, 0, T, P); // Создание текстового объекта
ObjectSetText("Text", "Open buy-order by RSI", 6, "Times New Roman", Navy); // Текст, шрифт, стиль, цвет
}
}
}
//-------------------------------------------------------------------- return;
}
在这种情况下,你需要对代码进行补充。创建一个外部变量,例如Appled_Price。
而你把代码中所有的PRICE_CLOSE改为Appled_Price。
啊,是的,对不起,我指的是新的构建,而且有一点不寻常的代码。
问题就在这里,代码中没有自由价格,所有的东西都在数组中,你就是无法改变它,我试过了((())。
如果它起作用,如何从下拉列表中进行选择(就像我问题中的图片)?
这就是问题所在,代码中没有免费的价格,你不能直接替换它((()
试试这里
将关闭改为打开。如果它开始以开放的方式计数,那么在这个方向上挖掘如何改变这个值。我现在无法运行测试终端来查看其编辑器。
事先改变这里的值。
问候大家))
我写了一个EA,但它在)))),或者说它不能正常工作。我一直在摸索,修复了很多东西,但尽管如此,这个EA还是不能工作。
这里是基于RSI指标的交易决策计算的一个片段。
//--------------------Данные------------------------------------
问题是,尽管有指标值,但EA立即打开了一个买入订单,并不想关闭它。文本和箭头等对象不会出现。
帮助我弄清楚这个问题))我自己也是第一次接触这个问题
问候大家))
我写了一个EA,但它在)))),或者说它不能正常工作。我一直在摸索,修复了很多东西,但尽管如此,这个EA还是不能工作。
这里是基于RSI指标的交易决策计算的一个片段。
//--------------------Данные------------------------------------
问题是,尽管有指标值,但EA立即打开了一个买入订单,并不想关闭它。文本和箭头等对象不会出现。
帮助我弄清楚这个问题))我自己也是第一次接触这个问题
那么你必须在条件中分别写出每个不等式? 如果你以某种方式概括,就会被看作是一个错误? 那么为什么程序在编译时说没有错误?
所以你必须在条件中单独写出每个不等式? 如果你以某种方式泛化它,就会被认为是一个错误? 那为什么程序在编译时说没有错误?
没有错误,你只是没有得到你所期望的结果。
...在这样的情况下,你如何寻找原因?
我纯粹是偶然发现了它。你需要简化事情。把所有东西都注释出来,取消第一个导入 的注释,编译,调用函数,等等。
将 "关闭 "改为 "打开 "是没有意义的,不会有什么变化。不去管这些乱七八糟的东西,而是从成型的条形图中提取数据,就比较容易。
没有错误,你只是没有得到你所期望的结果。
我想明白了))一个订单立即被打开,没有任何进一步的变化,因为我必须在行中写NULL而不是Symbol()。
你必须写NULL而不是Symbol(),因为变量类型有差异。 正因为如此,我看到RSI是一个空值,所以我立即打开它,因为条件有效。
我现在已经修复了它,一切都很好。
唯一的问题是,这些对象在第一次交易时只被创建一次。