template <typename T> void Swap( T &Value1, T &Value2 ) { const T Tmp = Value1;
Value1 = Value2; Value2 = Tmp; }
// Сортировка массива любого простого типа template <typename T> bool MyArraySort( T &Array[] ) { if (!ArraySort(Array)) { constint Size = ArraySize(Array);
for (int i = 0; i < Size - 1; i++) { const T Tmp = Array[i];
for (int j = i + 1; j < Size; j++) if (_R(Tmp) == Array[j]) // TypeToBytes.mqh { Swap(Array[i + 1], Array[j]);
i++; } } }
return(true); }
// Возвращает количество различных элементов массива, которых не меньше Repeat template <typename T> int Strange( const T &InArray[], constint Repeat = 2 ) { int Res = 0;
T Array[];
constint Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && MyArraySort(Array)) { int Tmp = 1;
for (int i = 1; i < Size; i++, Tmp++) if (_R(Array[i - 1]) != Array[i]) // TypeToBytes.mqh { if (Tmp >= Repeat) Res++;
//-----ищет цену последнего открытого ордера--------------------------------------------------------------- double OpenPrice = 0.0;
int orders=OrdersTotal(); for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol())continue; if( OrderType()==OP_SELL||OrderType()==OP_BUY)
OpenPrice = OrderOpenPrice(); break; }
//------если нет открытых позиций открывает два отложника------------------------------------------------------ int kolpos=0; for (int pos=0; pos<OrdersTotal(); pos++) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic) kolpos++; } if (kolpos==0) { OrderSend(Symbol(),OP_BUYSTOP,perv_Lot,Ask+shag1*Point,slipage,0,0,NULL,magic,0,clrGreen); OrderSend(Symbol(),OP_SELLSTOP,perv_Lot,Bid-shag1*Point,slipage,0,0,NULL,magic,0,clrRed); } //--------------определяет если есть открытые позиции--------------------------------------------------------------------- int order=0; for (int pos=0; pos<OrdersTotal(); pos++) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic)
if(OrderType()==OP_SELL||OrderType()==OP_BUY) //если это продажи или покупки считаем что сделки открыты
order++; } if(order>0) //--------------- находит и удаляет отложки.--------------------------------------------------------------- {
for(ic=OrdersTotal()-1;ic>=0;ic--) { if(OrderSelect(ic,SELECT_BY_POS,MODE_TRADES)==false) continue; if (OrderSymbol()==Symbol()) { if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)//если это отложки то удаляем { ret=OrderDelete(OrderTicket());//удалил отложки } }} //--------------ищем последний открытый ордер------------------------------------- for(ic=OrdersTotal()-1;ic>=0;ic--) { if(OrderSelect(ic,SELECT_BY_POS,MODE_TRADES)==false) continue; if (OrderSymbol()==Symbol()&&OrderMagicNumber()==magic&&OrderOpenPrice()==OpenPrice)
{
double minus=NormalizeDouble( Ask-OpenPrice,Digits); double plus= NormalizeDouble(Ask-OpenPrice,Digits); if(Digits==3) { minus=minus*100; plus=plus*100; } if(Digits==5) { minus=minus*10000; plus=plus*10000; } //-------------если последний открытый ордер SELL-------------------------------------------------------------- if (OrderType()==OP_SELL) { if(plus<=-profit) { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slipage,0); if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slipage,0); } } //---------------а если цена пошла в минус--------------------------------------------------------------------------- if( minus>=koredor) { double Lot=OrderLots(); OrderSend(Symbol(),OP_BUY,Lot*2,Ask,slipage,0,0,NULL,magic,0,clrRed);// открываем BUY с удвоеным лотом } } double minusbuy=NormalizeDouble(Ask-OpenPrice,Digits); double plusbuy=NormalizeDouble(Ask-OpenPrice,Digits); if(Digits==3) { minusbuy=minusbuy*100; plusbuy=plusbuy*100; } if(Digits==5) { minusbuy=minusbuy*10000; plusbuy=plusbuy*10000; } //-----------------если последний ордер Buy-------------------------------------------------------------------------------- if (OrderType()==OP_BUY) { if(plusbuy>=profit)//-------если цена пошла в плюс------------------------------------------------------- { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES);//---находим и закрываем все открытые ордера-------------------- if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slipage,0); if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slipage,0); } } //-----------------------------а если цена пошла в минус------------------------------------------------------------------ if(minusbuy<=-koredor) { Comment("Ордеров -",order); double Lot=OrderLots(); OrderSend(Symbol(),OP_SELL,Lot*2,Bid,slipage,0,0,NULL,magic,0,clrRed);//открываем ордер SELL с удвоенным лотом---- } } }}}}
externstring WmiFor = "Параметры индикатора WmiFor"; externbool IsTopCorner = true; // Информационный блок в верхнем углу? externint Offset = 1; // Смещение исходного образца в барах (для проверки надежности прогноза) [1..] externbool IsOffsetStartFixed = true; // Фиксировано ли начало образца externbool IsOffsetEndFixed = false; // Фиксирован ли конец образца externint PastBars = 24; // Размер образца в барах, который ищется на истории [3..] externint ForecastBars = 24; // На сколько баров вперед делать прогноз [1..] externint MaxAlts = 5; // Искать указанное кол-во лучших образцов [1..100] externbool ShowCloud = true; // Показывать ли облако externbool ShowBestPattern = true; // Показывать ли максимально близкий образец externbool IsExactTime = true; // Должно ли совпадать время образцов (для учета эффекта сессий) externdatetime MinDate = D'01.01.2001'; // Минимальная дата образца externint PeriodMA = 2; // Периуд сглаженной средней externdouble ScalePercents = 90.0; // Рассматривать только образцы с этим минимальным процентом совпадения externcolor IndicatorCloudColor = Sienna; // Цвет облака похожих вариантов externcolor IndicatorBestPatternColor = DodgerBlue; // Цвет самого похожего образца externcolor IndicatorVLinesColor = Sienna; // Цвет вертикальных линий-границ образца externcolor IndicatorTextColor = MediumBlue; // Цвет текста инф.блока externcolor IndicatorTextWarningColor = Tomato; // Цвет предупреждений в тестовом инф.блоке externint XCorner = 5; // Отступ инф.блока индикатора от правой границы графика externint YCorner = 5; // Отступ инф.блока индикатора от верхней границы графика externstring FontName = "Arial"; // Шрифт тестового инф.блока externint FontSize = 7; // Размер шрифта тестового инф.блока
ArraySort对于简单的结构很容易编写。
template <typename T>
void Swap( T &Value1, T &Value2 )
{
const T Tmp = Value1;
Value1 = Value2;
Value2 = Tmp;
}
// Сортировка массива любого простого типа
template <typename T>
bool MyArraySort( T &Array[] )
{
if (!ArraySort(Array))
{
const int Size = ArraySize(Array);
for (int i = 0; i < Size - 1; i++)
{
const T Tmp = Array[i];
for (int j = i + 1; j < Size; j++)
if (_R(Tmp) == Array[j]) // TypeToBytes.mqh
{
Swap(Array[i + 1], Array[j]);
i++;
}
}
}
return(true);
}
// Возвращает количество различных элементов массива, которых не меньше Repeat
template <typename T>
int Strange( const T &InArray[], const int Repeat = 2 )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && MyArraySort(Array))
{
int Tmp = 1;
for (int i = 1; i < Size; i++, Tmp++)
if (_R(Array[i - 1]) != Array[i]) // TypeToBytes.mqh
{
if (Tmp >= Repeat)
Res++;
Tmp = 0;
}
if (Tmp >= Repeat)
Res++;
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
const int Size = ArraySize(Array);
MqlTick Ticks[], NullTick = {0};
ArrayResize(Ticks, Size);
for (int i = 0; i < Size; i++)
{
Ticks[i] = NullTick;
Ticks[i].time = Array[i];
}
for (int i = 1; i <= 4; i++)
{
Print(Strange(Array, i));
Print(Strange(Ticks, i));
}
}
晚上好,请帮助我完成我写的EA,如果你可以这么说的话。
总的来说,该EA做了我所期望的事情。但有一个奇怪的小问题。
1) 在某些情况下,它首先打开一个0.02手的卖出位置,而不是挂单。虽然根据剧本,它不应该。(某处的错误)。我不明白这与什么有关,有时一切都很顺利,有时第一个打开的是塞尔。
请帮助解决这个错误。我想给我的EA一些关于我的著作和错误的一般性评论。我已经做了我的第一个专家顾问,判断是肯定的。
//| ALEXANDROS_001.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
input double perv_Lot=0.01;
input double shag1=40;
input double profit=20;
input double koredor=10;
input int magic=907;
input int slipage=10;
int ret,ORD=0,ic;
//
void OnTick()
{
//-----ищет цену последнего открытого ордера---------------------------------------------------------------
double OpenPrice = 0.0;
int orders=OrdersTotal();
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol())continue;
if( OrderType()==OP_SELL||OrderType()==OP_BUY)
OpenPrice = OrderOpenPrice();
break;
}
//------если нет открытых позиций открывает два отложника------------------------------------------------------
int kolpos=0;
for (int pos=0; pos<OrdersTotal(); pos++)
{
OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic)
kolpos++;
}
if (kolpos==0)
{
OrderSend(Symbol(),OP_BUYSTOP,perv_Lot,Ask+shag1*Point,slipage,0,0,NULL,magic,0,clrGreen);
OrderSend(Symbol(),OP_SELLSTOP,perv_Lot,Bid-shag1*Point,slipage,0,0,NULL,magic,0,clrRed);
}
//--------------определяет если есть открытые позиции---------------------------------------------------------------------
int order=0;
for (int pos=0; pos<OrdersTotal(); pos++)
{
OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic)
if(OrderType()==OP_SELL||OrderType()==OP_BUY) //если это продажи или покупки считаем что сделки открыты
order++;
}
if(order>0)
//--------------- находит и удаляет отложки.---------------------------------------------------------------
{
for(ic=OrdersTotal()-1;ic>=0;ic--)
{
if(OrderSelect(ic,SELECT_BY_POS,MODE_TRADES)==false) continue;
if (OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)//если это отложки то удаляем
{
ret=OrderDelete(OrderTicket());//удалил отложки
}
}}
//--------------ищем последний открытый ордер-------------------------------------
for(ic=OrdersTotal()-1;ic>=0;ic--)
{
if(OrderSelect(ic,SELECT_BY_POS,MODE_TRADES)==false) continue;
if (OrderSymbol()==Symbol()&&OrderMagicNumber()==magic&&OrderOpenPrice()==OpenPrice)
{
double minus=NormalizeDouble( Ask-OpenPrice,Digits);
double plus= NormalizeDouble(Ask-OpenPrice,Digits);
if(Digits==3)
{
minus=minus*100;
plus=plus*100;
}
if(Digits==5)
{
minus=minus*10000;
plus=plus*10000;
}
//-------------если последний открытый ордер SELL--------------------------------------------------------------
if (OrderType()==OP_SELL)
{
if(plus<=-profit)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slipage,0);
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slipage,0);
}
}
//---------------а если цена пошла в минус---------------------------------------------------------------------------
if( minus>=koredor)
{
double Lot=OrderLots();
OrderSend(Symbol(),OP_BUY,Lot*2,Ask,slipage,0,0,NULL,magic,0,clrRed);// открываем BUY с удвоеным лотом
}
}
double minusbuy=NormalizeDouble(Ask-OpenPrice,Digits);
double plusbuy=NormalizeDouble(Ask-OpenPrice,Digits);
if(Digits==3)
{
minusbuy=minusbuy*100;
plusbuy=plusbuy*100;
}
if(Digits==5)
{
minusbuy=minusbuy*10000;
plusbuy=plusbuy*10000;
}
//-----------------если последний ордер Buy--------------------------------------------------------------------------------
if (OrderType()==OP_BUY)
{
if(plusbuy>=profit)//-------если цена пошла в плюс-------------------------------------------------------
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);//---находим и закрываем все открытые ордера--------------------
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slipage,0);
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slipage,0);
}
}
//-----------------------------а если цена пошла в минус------------------------------------------------------------------
if(minusbuy<=-koredor)
{
Comment("Ордеров -",order);
double Lot=OrderLots();
OrderSend(Symbol(),OP_SELL,Lot*2,Bid,slipage,0,0,NULL,magic,0,clrRed);//открываем ордер SELL с удвоенным лотом----
}
}
}}}}
晚上好,请帮助我完成我写的EA,如果你可以这么说的话。
总的来说,该EA做了我所期望的事情。但有一个奇怪的小问题。
1) 在某些情况下,它首先打开一个0.02手的卖出位置,而不是挂单。虽然根据剧本,它不应该。(某处的错误)。我不明白这与什么有关,有时一切都很顺利,有时第一个打开的是塞尔。
请帮助解决这个错误。我想给我的EA一些关于我的写作和错误的一般性评论。这是我的第一个EA,所以请严格判断。
首先使用样式器(Ctrl +,),修复编译器的所有注释,有很多。
然后,这个。
double plusbuy=NormalizeDouble(Ask-OpenPrice,Digits);
if(Digits==3)
{
minusbuy=minusbuy*100;
plusbuy=plusbuy*100;
}
if(Digits==5)
{
minusbuy=minusbuy*10000;
plusbuy=plusbuy*10000;
}
很容易和毫不费力地改变成这样。
double minusbuy=NormalizeDouble((Ask-OpenPrice)/_Point,Digits);
double plusbuy=minusbuy;
同样地,在代码之上。
不过,不清楚为什么买入和卖出都要计算Ask,而且计算是在定义订单类型之前进行的。而OpenPrice不知为何离得太远,无法提前几个周期被发现。
首先使用样式器(Ctrl+,),修正编译器给出的所有注释,有很多。
然后,这个。
double plusbuy=NormalizeDouble(Ask-OpenPrice,Digits);
if(Digits==3)
{
minusbuy=minusbuy*100;
plusbuy=plusbuy*100;
}
if(Digits==5)
{
minusbuy=minusbuy*10000;
plusbuy=plusbuy*10000;
}
很容易和毫不费力地改变成这样。
double minusbuy=NormalizeDouble((Ask-OpenPrice)/_Point,Digits);
double plusbuy=minusbuy;
类似的还有按代码计算的上述内容。
虽然不清楚为什么 "询问 "对购买和销售都有影响,而且计算是在定义订单类型之前完成的。OpenPrice也在某种程度上决定了太多,甚至提前了几个周期。
谢谢你,我将尝试修复它。
问候。你能告诉我为什么在测试中说 "无法打开文件'E:\MT4-1\Alpari Limited MT4\MQL4\indicators/ Indicator parameters WmiFor.ex4' [2]"?
有一个指标,它是有效的。https://www.mql5.com/ru/code/10394
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern string WmiFor = "Параметры индикатора WmiFor";
extern bool IsTopCorner = true; // Информационный блок в верхнем углу?
extern int Offset = 1; // Смещение исходного образца в барах (для проверки надежности прогноза) [1..]
extern bool IsOffsetStartFixed = true; // Фиксировано ли начало образца
extern bool IsOffsetEndFixed = false; // Фиксирован ли конец образца
extern int PastBars = 24; // Размер образца в барах, который ищется на истории [3..]
extern int ForecastBars = 24; // На сколько баров вперед делать прогноз [1..]
extern int MaxAlts = 5; // Искать указанное кол-во лучших образцов [1..100]
extern bool ShowCloud = true; // Показывать ли облако
extern bool ShowBestPattern = true; // Показывать ли максимально близкий образец
extern bool IsExactTime = true; // Должно ли совпадать время образцов (для учета эффекта сессий)
extern datetime MinDate = D'01.01.2001'; // Минимальная дата образца
extern int PeriodMA = 2; // Периуд сглаженной средней
extern double ScalePercents = 90.0; // Рассматривать только образцы с этим минимальным процентом совпадения
extern color IndicatorCloudColor = Sienna; // Цвет облака похожих вариантов
extern color IndicatorBestPatternColor = DodgerBlue; // Цвет самого похожего образца
extern color IndicatorVLinesColor = Sienna; // Цвет вертикальных линий-границ образца
extern color IndicatorTextColor = MediumBlue; // Цвет текста инф.блока
extern color IndicatorTextWarningColor = Tomato; // Цвет предупреждений в тестовом инф.блоке
extern int XCorner = 5; // Отступ инф.блока индикатора от правой границы графика
extern int YCorner = 5; // Отступ инф.блока индикатора от верхней границы графика
extern string FontName = "Arial"; // Шрифт тестового инф.блока
extern int FontSize = 7; // Размер шрифта тестового инф.блока
double Index0, Index1, Index2, Index3, Index4, Index5;
void OnTick()
{
Index0 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 0, 3);
Index1 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 1, 3);
Index2 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 2, 3);
Index3 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 3, 3);
Index4 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 4, 3);
Index5 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 5, 3);
Comment ( "0==", DoubleToString(Index0,Digits), " 1==", DoubleToString(Index1,Digits), " 2==", DoubleToString(Index2,Digits),
" 3==", DoubleToString(Index3,Digits)," 4==", DoubleToString (Index4, Digits), " 5==", DoubleToString (Index5, Digits));
}
//+------------------------------------------------------------------+
问候。你能告诉我为什么在测试中说 "无法打开文件'E:\MT4-1\Alpari Limited MT4\MQL4\indicators/ Indicator parameters WmiFor.ex4' [2]"?
有一个指标,它是有效的。https://www.mql5.com/ru/code/10394
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern string WmiFor = "Параметры индикатора WmiFor";
void OnTick()
{
Index5 = iCustom(NULL, 0, WmiFor, IsTopCorner, Offset, IsOffsetStartFixed, IsOffsetEndFixed, PastBars, ForecastBars, MaxAlts, ShowCloud, ShowBestPattern, IsExactTime, MinDate, PeriodMA,
ScalePercents, IndicatorCloudColor, IndicatorBestPatternColor, IndicatorVLinesColor, IndicatorTextColor, IndicatorTextWarningColor, XCorner, YCorner, FontName, FontSize, 5, 3);
Comment ( "0==", DoubleToString(Index0,Digits), " 1==", DoubleToString(Index1,Digits), " 2==", DoubleToString(Index2,Digits),
" 3==", DoubleToString(Index3,Digits)," 4==", DoubleToString (Index4, Digits), " 5==", DoubleToString (Index5, Digits));
}
//+------------------------------------------------------------------+
阅读关于"iCustom"的文件,以及如何正确地访问该指标。
谢谢你。
我忘记了倒装的逗号,你这个疯子。
下午好!
帮我找出问题所在。我需要在该线被柱状物穿过时输出价格。我已经写好了代码。
int start() {
double pr=ObjectGetValueByShift("line",0)。
警报(pr)。
return(0);}
line是该行的名称。
这个代码总是显示 "0"。怎么了?
下午好!
帮我找出问题所在。我需要在该线被柱状物穿过时输出价格。我已经写好了代码。
int start() {
double pr=ObjectGetValueByShift("line",0)。
警报(pr)。
return(0);}
line是该行的名称。
这个代码总是显示 "0"。怎么了?
你有一个趋势线 吗?
在视觉上超过(低于)0条,不,在属性中检查框,束。
大家下午好!
问题,在insta上,当试图发送一个订单 时,它说停止是错误的。
这里是这一行本身。
OrderSend(Symbol(),OP_BUYSTOP,Lots,HiP,3,0,0,NULL,111,0,clrBlue)。
如果我在止损中设置一个数字,一切就正常了。
我不需要止损。我应该怎么做?