Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не пробуйте, сделайте это
Я на работе... и порт metatrader здесь заблокирован.
Привет, я все еще новичок в программировании, и у меня проблемы с добавлением следующих функций к этому простому советнику:
1. Тейк-профит
2. Стоп-лосс
3. Трейлинг-стоп
4. Количество пунктов для активации трейлинг-стопа
//---- input parameters
extern double Lots=0.1;
extern int Slippage=5;
int MagicNum = 98760;
bool longPosOpened, shortPosOpened;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);
double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);
if (crossup != EMPTY_VALUE)
{
if (!PosOpened(OP_BUY))
{
CloseAllOpenAndPendingTrades();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);
}
}
else if(crossdown != EMPTY_VALUE)
{
if (!PosOpened(OP_SELL))
{
CloseAllOpenAndPendingTrades();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);
}
}
return(0);
}
//+------------------------------------------------------------------+
bool PosOpened(int orderType)
{
int total=OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderType() == orderType)
{
return(true);
}
}
return(false);
}
void CloseAllOpenAndPendingTrades()
{
int total = OrdersTotal();
for(int i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair
int type = OrderType();
bool result = false;
switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);
break;
//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);
break;
//Close pending orders
case OP_BUYLIMIT :
case OP_BUYSTOP :
case OP_SELLLIMIT :
case OP_SELLSTOP : result = OrderDelete( OrderTicket() );
}
}
return(0);
}
Как обнаружить скачок от параболического сар?
В настоящее время я использую этот код для обнаружения скачка:
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // если есть скачок вверх.
Но это, похоже, не работает правильно.
Как я могу определить, находится ли psar выше или ниже моих баров?
TIA
я на работе... и порт metatrader заблокирован здесь .
В настоящее время я использую этот код для обнаружения скачка:
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // если есть скачок вверх.
Но это, похоже, не работает правильно.
Как я могу определить, находится ли psar выше или ниже моих баров?
TIAПривет IN10TION, знаете ли вы хороший способ проверить, закрылась ли сделка, чтобы советник не размещал новую сделку (повторный вход) до следующего сигнала? Мой советник проверяет состояние торговли до, скажем, 10 баров, но если условие продажи уже было выполнено в первые несколько баров и закрылось, я хочу, чтобы советник прекратил проверку до 10-барного смещения и ждал до следующего фактического сигнала?
Спасибо
Используйте функцию OrderHistory().
Люкс
Используйте функцию OrderHistory(). Lux
Спасибо, но не уверен, как это работает. Я не хочу знать, был ли ордер только что закрыт, а хочу знать, был ли ордер открыт и закрыт в течение стольких-то баров. Затем только разместить еще одну сделку на следующем входе основного сигнала. Я все еще пытаюсь устранить быстрые повторные входы в сделку, когда ордер был только что открыт и закрыт, но торговые условия все еще выполняются. Я хочу, чтобы он каким-то образом делал только одну сделку на основной сигнал, так что даже если торговые условия все еще действительны, не торговал снова, если уже торговал по этому сигналу (включая смещение).
Попробую объяснить на примере. Это может быть то, с чем ничего нельзя поделать.
EG: Допустим, я использую QQE и VQI в качестве точки входа в сигнальную торговлю (QQE пересекается, а VQI меняется с покупки на продажу или наоборот).
Теперь я добавляю опцию SignalOffset, скажем, на 6 баров, потому что пересечение QQE и сигнал VQI могут не произойти точно на одном и том же баре.
Теперь допустим, что есть действительная сделка в пределах 2 баров друг от друга, когда QQE и VQI согласны, так что теперь сделка размещена, но у меня есть TP на 10 пунктов, и бар движется на 15 пунктов, мой TP пробит и сделка закрыта. Торговые условия все еще выполняются из-за моего 6-барного смещения, теперь размещается еще одна сделка (повторный вход), плохо если этот один или два бара двигаются на 100 пунктов, а мой TP равен 10, у меня только что было 10 сделок, плохо Я хочу только одну сделку на сигнал (со смещением).
Имеет ли это смысл? Я все еще хочу, чтобы он торговал в пределах 6 баров, хотя, если произойдет противоположный сигнал, а другая сделка была закрыта.
Спасибо
Спасибо, но не уверен, как это работает. Я не хочу знать, был ли ордер только что закрыт, а хочу знать, был ли ордер открыт и закрыт в течение стольких-то баров. Затем только разместить еще одну сделку на следующем входе основного сигнала. Я все еще пытаюсь устранить быстрые повторные входы в сделку, когда ордер был только что открыт и закрыт, но торговые условия все еще выполняются. Я хочу, чтобы он каким-то образом делал только одну сделку на основной сигнал, так что даже если торговые условия все еще действительны, не торговал снова, если уже торговал по этому сигналу (включая смещение).
Попробую объяснить на примере. Это может быть то, с чем ничего нельзя поделать.
EG: Допустим, я использую QQE и VQI в качестве сигнальной точки входа в торговлю (пересечение QQE и VQI меняется с покупки на продажу или наоборот).
Теперь я добавляю опцию SignalOffset, скажем, на 6 баров, потому что пересечение QQE и сигнал VQI могут не произойти точно на одном и том же баре.
Теперь допустим, что есть действительная сделка в пределах 2 баров друг от друга, когда QQE и VQI согласны, так что теперь сделка размещена, но у меня есть TP на 10 пунктов, и бар движется на 15 пунктов, мой TP пробит и сделка закрыта. Торговые условия все еще выполняются из-за моего 6-барного смещения, теперь размещается еще одна сделка (повторный вход), плохо если этот один или два бара двигаются на 100 пунктов, а мой TP равен 10, у меня только что было 10 сделок, плохо Я хочу только одну сделку на сигнал (со смещением).
Имеет ли это смысл? Я бы все еще хотел, чтобы он торговал в пределах 6 баров, хотя, если произойдет противоположный сигнал, а другая сделка была закрыта.
СпасибоОбмен данными между двумя приложениями metatrader
Я пытаюсь записать данные в файл из одного метатрейдера, чтобы прочитать их из второго метатрейдера.
Проблема в том, что когда я пытаюсь записать данные в c:\, я получаю сообщение об ошибке "абсолютный путь к файлу "C:\EURUSD.txt" не разрешен".
Есть идеи или другие способы обмена данными между двумя приложениями метатрейдера?