Artur116: Uso il segnale Flive, ma a volte voglio chiudere io stesso un ordine. Ma appena lo chiudo, si riapre. C'è un modo per risolvere questo problema?
Nesradamus: Ho supposto che ci siano solo due estremi mensili - min e max... Beh, non importa, all'inizio avevo un codice lungo, ecco perché ho chiesto aiuto... Ma mi è venuto in mente che sono riuscito ad inserirlo in quattro righe.
Questo è se su una candela mensile. Naturalmente ci sarà iHigh(Symbol(), PERIOD_MN1, BarOfMonth); e iLow(Symbol(), PERIOD_MN1, BarOfMonth);
E se dobbiamo trovare gli estremi del prezzo su un grafico giornaliero in un mese, ce ne sarà sicuramente più di uno su almeno 28 barre ;)
come far disegnare il rettangolo in avanti invece che indietro, per esempio cinque barre in avanti ad un prezzo specificato ...... e non ridisegnarlo
Il nome "object_name" dovrebbe contenere l'ora in cui è stato disegnato. Per esempio, "Object_name "+TimeToString(Time[0]); Poi ogni rettangolo avrà il suo nome.
Per specificare lo spostamento a destra della barra zero, aggiungere il numero richiesto di barre a Time[0], per esempio Time[0]+Period()*5*60 (aggiungere cinque barre)
#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos=1;
externint sl=40;
externint tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
intOnInit()
{
//---
MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку//---return(INIT_SUCCEEDED);
}
voidOnTick()
{
//---if(IsNewBar()==true)//если новый бар включаемся
{
if(buy(pos)==true)//если цена выше МА продолжаем
{
if(!ExistPositions(Symbol(),-1,-1,0))//если нету открых ордеров продолжаем
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_BUY)//если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена //все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО // ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
{
trade=true;
}
if(trade==true)
{
OpenPosition(Symbol(),OP_BUY,0.1,Ask-sl*Point,Ask+tp*Point);
trade=false;
}
}
}
if(sell(pos)==true)
{
if(!ExistPositions(Symbol(),-1,-1,0))
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_SELL)
{
trade2=true;
}
if(trade2==true)
{
OpenPosition(Symbol(),OP_SELL,0.1,Bid+sl*Point,Bid-tp*Point);
trade=false;
}
}}
}
}
//возвращает истину если закрытие бара с указаной позицией выше МАbool buy(int pos)
{
if(iClose(Symbol(),0,pos)>MA.Main(1))
returntrue;
elsereturnfalse;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell(int pos)
{
if(iClose(Symbol(),0,pos)<MA.Main(1))
returntrue;
elsereturnfalse;
}
Tutte le FUNZIONI tranne due condizioni di ACQUISTO e VENDITA sono state prese dal ramo di Kim...... per favore ditemi dove ho sbagliato...ho bisogno di un trade per aprire su un'intersezione
Non riesco a capire cosa c'è che non va? Nel tester tutto funziona, ma sul reale e sul demo, quando cerco di aprire un ordine, ottengo "Error 0". GetLastError() restituisce "0" che significa nessun errore. Cosa significa?
Leo59: Non riesco a capire cosa c'è che non va? Nel tester funziona tutto, ma sul reale e sul demo, quando cerco di aprire un ordine, ottengo "Error 0". GetLastError() restituisce "0" che significa nessun errore. Cosa significa?
Significa che questo è il modo in cui è scritto nel codice, se ti dà fastidio, per favore correggilo.
Uso il segnale Flive, ma a volte voglio chiudere io stesso un ordine. Ma appena lo chiudo, si riapre. C'è un modo per risolvere questo problema?
Deselezionare "Sincronizza le posizioni..."
Ho supposto che ci siano solo due estremi mensili - min e max... Beh, non importa, all'inizio avevo un codice lungo, ecco perché ho chiesto aiuto... Ma mi è venuto in mente che sono riuscito ad inserirlo in quattro righe.
Questo è se su una candela mensile. Naturalmente ci sarà iHigh(Symbol(), PERIOD_MN1, BarOfMonth); e iLow(Symbol(), PERIOD_MN1, BarOfMonth);
E se dobbiamo trovare gli estremi del prezzo su un grafico giornaliero in un mese, ce ne sarà sicuramente più di uno su almeno 28 barre ;)
un'altra domanda sulla funzione
come far disegnare il rettangolo in avanti invece che indietro, per esempio cinque barre in avanti ad un prezzo specificato ...... e non ridisegnarlo
Il nome "object_name" dovrebbe contenere l'ora in cui è stato disegnato. Per esempio, "Object_name "+TimeToString(Time[0]); Poi ogni rettangolo avrà il suo nome.
Per specificare lo spostamento a destra della barra zero, aggiungere il numero richiesto di barre a Time[0], per esempio Time[0]+Period()*5*60 (aggiungere cinque barre)
C'è un modo in mql4 per nascondere un po' di codice dalla vista, collassare l'area del codice in modo che sia posto sotto il più (+)?
come in sharp #region #endregion, il codice posto tra queste direttive sarà possibile collassare.
Non riesco a capire cosa c'è che non va? Nel tester funziona tutto, ma sul reale e sul demo, quando cerco di aprire un ordine, ottengo "Error 0". GetLastError() restituisce "0" che significa nessun errore. Cosa significa?
Significa che questo è il modo in cui è scritto nel codice, se ti dà fastidio, per favore correggilo.
È scritto nel codice, quindi se vi dà fastidio, correggetelo.
Cosa devo fare se l'ordine non si apre?