#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;
}
私はFliveシグナルを使用していますが、時には自分で注文を閉じたいこともあります。でも、閉じるとすぐにまた開いてしまう。これを解決する方法はあるのでしょうか?
"ポジションを同期する "のチェックを外す。
月間の極値はminとmaxの2つしかないと思っていたのですが...。まあ、気にしないでください。最初はコードが長くて、それで助けを求めたんです...。でも、夜が明けて、なんとか4行に収まったんです。
これは月足ローソク足での場合です。もちろん、iHigh(Symbol(),PERIOD_MN1, BarOfMonth); と iLow(Symbol(), PERIOD_MN1, BarOfMonth) は存在するはずです。
また、1ヶ月以内に日足チャートで価格の極値を見つける必要がある場合、少なくとも28本のバーに1つ以上存在することは間違いないでしょう ;)
関数に関するもう一つの質問
矩形が後方ではなく前方に描画されるようにするには、例えば指定した価格で5本前方に描画する......そして再描画しないようにするには。
オブジェクト名 "には、描画された時刻を含めること。例えば、"Object_name "+TimeToString(Time[0]); そうすると、それぞれの矩形は独自の名前を持つことになります。
ゼロバーから右へのシフトを指定するには、Time[0]に必要なバー数を 追加します。例えば、Time[0]+Period()*5*60(5バー追加)
mql4で、 あるコードを表示から隠し、コードエリアを折りたたんでプラス(+)の下に 配置する方法はありますか?
シャープ#region #endregion のように 、これらのディレクティブの間に置かれたコードは、折りたたむことが可能になります。
どこが悪いのかわからない?テスターではすべてうまくいくのですが、リアルとデモでは、注文を開こうとすると「Error 0」と表示されるのです。GetLastError() は、エラーなしを意味する "0 "を返します。どういう意味ですか?
コードにこのように書かれているということです。もし気になるようでしたら、訂正してください。
コードに書いてあるので、気になるようなら直してください。
注文が開けない場合はどうしたらよいですか?