Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да, сэр, всего 1 сделка, но ваш пример был великолепен, он будет очень полезен в качестве основы для создания новых востоков.
void OnTick()
{
double up = iIchimoku(NULL,5,9,26,52,3,0),
down = iIchimoku(NULL,5,9,26,52,4,0);
static bool was_above = true;
bool is_above = (MathMax(up,down)< Bid);
if(!trade_made && !was_above && is_above && open_orders()<1)
{
if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
{
printf("OrderSend() failed. Error code: %i",GetLastError());
}
else t rade_made=true;
}
was_above = is_above;
}
int open_orders()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
{
if(!OrderSelect(i,SELECT_BY_POS)) continue; // select the order
if(OrderSymbol() != _Symbol) continue; // optional check for same symbol
if(OrderMagicNumber()!= magic_no) continue; // optional check for magic number
if(OrderType() < 2) count++; // 0 == OP_BUY and 1 == OP_SELL
}
return(count);
}
Марко: Я попробовал ваше новое обновление, но оно не делает никакой торговли, я ввел все так, как вы написали в последнем сообщении, только удалил второй int, в тикете. Но первая сделка не совершается в тестере стратегий, что теперь делать?
Он должен разместить сделку, потому что:
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
//| One Order.mq4 |
//| Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool order=0;int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(order==0)
{
double up=iIchimoku(NULL,5,9,26,52,3,0);
double down=iIchimoku(NULL,5,9,26,52,4,0);
{
if(MathMax(up,down)<Bid)
{
ticket=OrderSend(NULL,0,0.01,Ask,3,Bid-150*Point,Bid+100*Point);
{
if(ticket>-1)
{
order=1;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Я только что попробовал, и он разместил ОДИН ордер...
Спасибо большое,honest_knave, это именно то, что мне было нужно, я буду вечно в долгу,
спасибо и вам, мистер Марко, за вашу помощь.
Спасибо большое,honest_knave, это именно то, что мне было нужно, я буду вечно в долгу,
Пожалуйста. Но согласны ли вы, что ответ редко бывает таким простым, как кажется? Что может объяснить некоторые комментарии здесьCODE Help( Urgent).
Я уже удалил этот комментарий, простой советник - это проблема для меня, я ничего не знаю, чтобы что-то сказать.
Эй, мы все еще учимся. И твое сердце было в правильном месте.
Я рад, что ты решил свою проблему.
Есть много способов сделать одно и то же... Марко и я решали эту проблему с разных сторон, и оба они одинаково правильные.
Удачи
Да, г-нMarco vd Heijden, это работает точно так же, как и у honest_knave, я попробовал снова, основываясь на последнем коде, который вы предложили, работает отлично, я приму оба ответа, и использую ваш для этого скрипта, так как он более похож на оригинальную идею.
Спасибо за помощь
Я полагаю, что из кода, который вы опубликовали, советник не сможет снова открыть ордер. Если только вы не удалите советника с графика и не подключите его снова (для инициализации). Я полагаю, это и было целью?
Теперь будем надеяться, что он выберет правильное направление :)
Я где-то читал о парне, который забыл, что у него все еще есть открытая позиция, и угадайте, что произошло... $$$$$
Я полагаю, что из кода, который вы разместили, советник не сможет снова открыть ордер. Если только вы не удалите советника с графика и не подключите его снова (для инициализации). Я полагаю, это и было целью?