Как кодировать? - страница 47

 

Спасибо, MrPip

Я в основном понимаю, к чему вы клоните, я дам ему время и спрошу снова, если застряну.

Спасибо

 
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.

Роберт

Beno:
Какое строковое имя этого инди я должен использовать для 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 и т.д.

Любая помощь была бы очень кстати
 

Спасибо, мистер Пипс.

Разобрался

 
MrPip:
Исправления выделены красным цветом ниже. Роберт

Я попробовал это, но, кажется, это не работает. Я хочу только одну сделку в день...

for(int a=0;a<OrdersTotal();a++)

{

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;

}

}

}
 
antone:
Я пробовал это, но, кажется, это не работает. Я хочу только одну сделку в день...

Я использовал это в других советниках, и это работает правильно.

Я проверяю закрытые сегодня сделки вместо открытых сегодня.

Использование в запуске следующее

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);

}

Причина обращения: