Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте,
возможно ли с помощью кода модифицировать только ордер на покупку или продажу текущего активного символа графика?
Это будет очень полезно для меня в скрипте, где я использую функцию WindowsPriceonDropped для открытия ордера.
Спасибо
...
дасио,
Попробуйте сделать что-то вроде этого:
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
// do the proccessing you wish here
}
}
Привет,
можно ли с помощью кода модифицировать только ордер на покупку или продажу текущего активного символа графика?
Это будет очень полезно для меня в скрипте, где я использую функцию WindowsPriceonDropped для открытия ордера.
СпасибоКто хочет испытание?
Мне нужен код, чтобы сделать следующее, см. прикрепленный скриншот. Это будет торговля на покупку.
Я пробовал цикл for, множество условий if, но ни одно из них не дало результатов, которые я ищу.
Все кажется простым, но я не смог заставить его работать.
Ваше условие ввода может быть написано примерно так:
if (Digits==3 || Digits==5) pipMultiplier = 10;
double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);
bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));
if (openBuy)
{
// your code here
}
Мне нужен код, чтобы сделать следующее, см. прикрепленный скриншот. Это будет сделка на покупку.
Я пробовал цикл for, множество условий if и ни одно из них не дало результатов, которые я ищу.
Это кажется простым, но я не смог заставить его работать.Ваше условие входа может быть написано примерно так:
if (Digits==3 || Digits==5) pipMultiplier = 10;
double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);
bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));
if (openBuy)
{
// your code here
}
Но это еще не все. Код, который вы разместили, даст мне сигнал для бара, который пересекает скользящую среднюю. Но мне также нужен способ входа в сделку на любом баре после стрэддл-бара до 5 баров при условии, что они не превышают MA+5. Причина, по которой я не беру сигнал на покупку на стрэддл-баре, заключается в том, что есть другой индикатор, который должен показывать значение TRUE, которое может не быть TRUE на стрэддл-баре, но если оно TRUE на любом баре до 5 баров после стрэддл-бара и не превысило лимит MA+5, я все равно могу заключить сделку. Я не беру несколько сделок, только одну на одну установку.
Вот что у меня есть на данный момент. На данный момент я только помечаю подходящие бары стрелкой под ними, только для покупок. Как только я разберусь с этим, я вставлю код для исполнения ордера. Я знаю, что это выглядит просто, но если я не упустил что-то очевидное, это не так.
//+------------------------------------------------------------------+
double Poin;
//+------------------------------------------------------------------+
//| Custom initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
if (Point==0.00001) Poin=0.0001;
else {
if (Point==0.001) Poin=0.01;
else Poin=Point;
}
//----
return(0);
}
//+------------------------------------------------------------------+
// +
//+------------------------------------------------------------------+
int deinit(){
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start(){
int MAM1StartBar=1;
int M1MAEntryPoint1=0;
int M1MAEntryPoint2=5;
string sObjName;
//------Indicators-------------//
double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);
double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);
double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);
double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);
double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);
double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);
double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);
double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);
double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);
double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);
double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);
double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);
double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);
double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);
// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);
// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);
//Blue arrow indicates straddle bar
if(M1High0>= MAM0 && M1Low0<=MAM0){
sObjName="Test_BLine1"+Time[MAM1StartBar];
ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);
ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);
ObjectSet(sObjName, OBJPROP_COLOR, Blue);
}
//Aqua arrow indicates straddle bar+1
if(M1Low1=MAM0){
if(M1High1<=MAM0+M1MAEntryPoint2*Poin){
if(M1Low0 > MAM0){
sObjName="Test_BLine2"+Time[MAM1StartBar];
ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);
ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);
ObjectSet(sObjName, OBJPROP_COLOR, Aqua);
}
}
}
//----
return(0);
}
На этом скриншоте вам нужно прервать сделку на баре 4, потому что бар 3 превысил лимит MA +5, что означает, что на баре 4 вам нужно проверить, превысил ли бар 3 лимит MA +5, он превысил, так что это конец этой торговой установки.
Здесь все 5 баров соответствуют требованиям, потому что ни один из них не превысил лимит MA +5.
На этом скриншоте вам нужно прервать сделку на баре 4, потому что бар 3 превысил лимит MA +5, что означает, что на баре 4 вам нужно проверить, превысил ли бар 3 лимит MA +5, он превысил, и это конец этой торговой установки.
Здесь все 5 баров соответствуют требованиям, потому что ни один из них не превысил лимит MA +5.
...
cyber1
В ваших примерах, насколько я понимаю, для того, чтобы иметь возможность прервать сделку, как вы описываете, вы также должны знать будущее (поскольку до бара "прерывания" правила действовали и возвращали сигнал на вход).
С другой стороны, если вы попытаетесь проверить все бары назад для условия входа, в конечном итоге у вас всегда будет "нарушение правила" и вы не сможете войти в позицию.
На этом скриншоте вам нужно прервать сделку на баре 4, потому что бар 3 превысил лимит MA +5, что означает, что на баре 4 вам нужно проверить, превысил ли бар 3 лимит MA +5, он превысил, и это конец этой торговой установки.
Здесь все 5 баров подходят для входа, потому что ни один из них не превысил лимит MA +5
Закрытие всех открытых сделок
Кто-нибудь может помочь мне сделать этот советник?
Этот советник будет закрывать все открытые торговые пары при достижении целевой прибыли и убытка.
Когда он закроет все, то начнет отслеживать открытые сделки.
У меня есть лимитный талант, чтобы сделать это.
Этот советник должен работать отдельно от основного советника по каждой паре.
Сигналы и линии сопротивления/поддержки dinamyc.
Не могли бы вы помочь мне перевести этот индикатор на язык MT4?
a:=(hhv(close,tpr)+llv(close,tpr)+close)/3;
b:=(a1*2)-hhv(close,tpr);
перемещение b:=mov(b,tpr,simple);
c:=(a1*2)-llv(close,tpr);
перемещение c:=mov(c,tpr,simple);
d:=(hhv(close,tpr/2)+llv(close,tpr/2)+close)/3;
перемещение d:=mov(d,tpr/2,simple);
поток:=(b+c+d)/3;
moving stream:=mov(stream,tpr,simple).
hhv= максимальное значение периода (наибольшее значение цены закрытия в выбранном временном периоде)
llv= минимальное значение периода (самое низкое значение цены закрытия в выбранном временном периоде)
tpr= временной период (от 1 до любого желаемого)
mov= скользящая средняя.
На выходе должны быть "stream" и "moving stream"! Даже если он будет содержать "b", "moving b", "c", "moving c", "d" и "moving d", это не плохо!
Спасибо.
Этот форум замечательный......
Lucmat