Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо, MrPip
Я в основном понимаю, к чему вы клоните, я дам ему время и спрошу снова, если застряну.
Спасибо
Поправки выделены красным цветом. Роберт
Спасибо, Роберт. Это помогло.
Отсчет бара вниз с помощью MTF-индикаторов
MTF = индикаторы мультитаймфрейма
double BarCountDownInSec()
{
double g;
g=Time[0]+Period()*60-TimeCurrent();
return(g);
}
Приведенная выше функция дает второй отсчет для баров на текущем графике. Таким образом, если ее поместить на 5-минутный график, она будет показывать секундный отсчет для каждого 5-минутного бара.
Вопрос: Как мне получить секундный отсчет для 15-минутного бара (т.е. 3x 5-минутных бара), когда я нахожусь на 5-минутном графике, т.е. отсчет 15 минут с 6.00 до 6.15. затем с 6.15 до 6.30, пока я нахожусь на 5-минутном графике?
Проблема с моим программированием (BUG)
Привет,
Кто-нибудь может помочь мне разобраться с этой ошибкой. У меня почти получилось, только гистограмма не появляется, пока я не соберу код заново.
Пожалуйста, помогите!!! Пожалуйста, пожалуйста, пожалуйста.
С уважением,
проблема icustom
Какое строковое имя инди я должен использовать для iCustom части советника?
Я пробовал
MT4-LevelStop-Reverse-vBO-4
MT4-LevelStop-Reverse-
MT4-LevelStop-Reverse
vBO-4
vB0.4
vtsbh2483-
MT4-LevelStop-Reverse-" + INDICATOR_VERSION + "(
Так что я понятия не имею, что делать дальше.
Или мне нужно ввести строковые имена ATRMode, Manual Mode и т.д.
Любая помощь была бы очень кстати
Кто-нибудь может увидеть ошибку? Я не могу понять, где ошибка в этом коде. Я продолжаю получать. Любая помощь в указании на это была бы замечательной. Спасибо
Переменная LongSig не определена
//+------------------------------------------------------------------+
//| Вычислить открытые позиции |
//+------------------------------------------------------------------+
int CalculateCurrentOrders() {
buys=0; sells=0;
string symbol=Symbol();
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==expertId)
{
if(OrderType()==OP_BUY || OrderType()==OP_BUYSTOP) buys++;
if(OrderType()==OP_SELL || OrderType()==OP_SELLSTOP) sells++;
}
}
//---- возврат объема ордеров
if(buys>0) return(buys);
else return(-sells);
}
//+------------------------------------------------------------------+
//| Проверяем наличие открытых ордеров |
//+------------------------------------------------------------------+
void CheckForSignals() {
buysig=false;
sellsig=false;
closebuy=false;
closesell=false;
double MOM = iCustom (NULL,0, "Momentum-ZL",MOMPeriod,0,shift);
double SRL = iCustom (NULL,0, "MT4-LevelStop-Reverse-vBO-4",UseATRMode,NonATRStopPips,ATRPeriod,ATRMultiplier,ATRSmoothing,UpArrowColor,DnArrowColor,ArrowDistance,233);
double SRS = iCustom (NULL,0, "MT4-LevelStop-Reverse-vBO-4",UseATRMode,NonATRStopPips,ATRPeriod,ATRMultiplier,ATRSmoothing,UpArrowColor,DnArrowColor,ArrowDistance,234);
double QQE_RsiMa = iCustom(NULL,0, "QQE",0,shift);
double QQE_TrLevelSlow = iCustom(NULL,0, "QQE", 1, shift);
double QQE_RsiMaPrev = iCustom(NULL,0, "QQE",0,shift + 1);
double QQE_TrLevelSlowPrev = iCustom(NULL,0, "QQE", 1, shift + 1);
double Pivot = iCustom (NULL,0, "Pivot Points Multitimeframe",midpivots,Fhr,daily,weekly,monthly,1,shift)
bool LongSig = QQE_RsiMaPrev QQE_TrLevelSlow >50.0;
bool ShortSig = QQE_RsiMaPrev > QQE_TrLevelSlowPrev && QQE_RsiMa < QQE_TrLevelSlow<50.0;
bool LongSig2 = MOM>0.0;
bool ShortSig2 = MOM<0.0;
bool LongSig3 = SRL>Pivot;
bool ShortSig3 = SRS<Pivot;
buysig = LongSig && LongSig2 && LongSig3;
sellsig = ShortSig && ShortSig2 && ShortSig3;
closebuy=sellsig;
closesell = buysig;
}
void CheckForOpen() {
if (last==Time[0]) return;
int res,ord;
двойной вход, стоп, прибыль;
ord=CalculateCurrentOrders();
if (ord!=0) CheckForClose();
ord=CalculateCurrentOrders();
//---- условия покупки
if (buys<ConsecutiveTrades && buysig) {
res=OpenAtMarket(OP_BUY,Lots);
if (res<0) Print("Ошибка открытия ордера BUY : ",ErrorDescription(GetLastError()));
else last=Time[0];
}
//---- условия продажи
if (-sells<ConsecutiveTrades && sellsig) {
res=OpenAtMarket(OP_SELL,Lots);
if (res<=0) Print("Ошибка открытия ордера SELL: ",ErrorDescription(GetLastError()));
else last=Time[0];
}
}
int OpenAtMarket(int mode,double lot) {
int res,tr,col;
double openprice,sl,tp;
tries=0;
while (res<=0 && tries<OrderTriesNumber) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
RefreshRates();
if (mode==OP_SELL) {
openprice=Bid;
col=Red;
} else {
//openprice=nd(Ask);
openprice=Ask;
col=Blue;
}
res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+expertId,expertId,0,col);
попытки++;
}
return(res);
}
Исправлено ИТ
Попробуйте первый из вашего списка с цифрой 0 вместо буквы O для vB0-4.
Роберт
Какое строковое имя этого инди я должен использовать для iCustom части советника?
Я пробовал
MT4-LevelStop-Reverse-vBO-4
MT4-LevelStop-Reverse-
MT4-LevelStop-Reverse
vBO-4
vB0.4
vtsbh2483-
MT4-LevelStop-Reverse-" + INDICATOR_VERSION + "(
Так что я понятия не имею, что делать дальше.
или мне нужно ввести строковые имена ATRMode, Manual Mode и т.д.
Любая помощь была бы очень кстатиСпасибо, мистер Пипс.
Разобрался
Исправления выделены красным цветом ниже. Роберт
Я попробовал это, но, кажется, это не работает. Я хочу только одну сделку в день...
{
if (OrderSelect(a,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol()== Symbol() && OrderMagicNumber()== Magic_Number)
{
if (TimeDay(OrderOpenTime()) >= TimeDay(TimeCurrent())) Trade = false;
if (TimeDay(OrderOpenTime()) < TimeDay(TimeCurrent())) Trade = true;
}
}
}Я пробовал это, но, кажется, это не работает. Я хочу только одну сделку в день...
Я использовал это в других советниках, и это работает правильно.
Я проверяю закрытые сегодня сделки вместо открытых сегодня.
Использование в запуске следующее
if (LastTradeClosedToday()) return(0);
// код здесь для открытия новых сделок
//+------------------------------------------------------------------+
//| LastTradeClosedToday |.
//| Проверяем историю, чтобы узнать, закрылась ли последняя сделка сегодня |
//+------------------------------------------------------------------+
bool LastTradeClosedToday()
{
int cnt, total;
bool Closed;
total = HistoryTotal();
for (cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol()!=Symbol()) continue;
if (OrderMagicNumber() != MagicNumber) continue;
Закрыто = false;
if (OrderType() == OP_BUY)
{
if (TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()))
{
Closed = true;
}
cnt = 0;
}
if (OrderType() == OP_SELL)
{
if (TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()))
{
Closed = true;
}
cnt = 0;
}
}
return (Closed);
}