if(sign0==1) //проверка начинаертя только после появления 1
{
t=TimeCurrent(); //фиксируем время//в цикле от t до t+t1 через каждые дельта секундwhile(t<t+t1) //t1 отрезок времени в перед за которое будем проверять if(sign0==1)
{
if(sign0==1) //еще паз проверка наличия 1
sign1=1; //новой переменой присваиваем 1else
{sign1=0;break;} // если нет присваиваем 0 и заканчиваем цикл
t=t+delta; //проверяем через каждые дельта секунд
}
if(sign1==1) op="BUY";
return;
}
void CheckForOpen()
{
int res;
datetime t;
int sign=0;
//---- go trading only for first tiks of new bardouble tr0=iCustom(NULL,0,"trd",0,0);
double tr1=iCustom(NULL,0,"trd",1,0);
//---- sell conditionsif(tr1==1)
{
t=TimeCurrent();
while(t<t+tim)
{
if(tr1==1)
sign=-1;
else
{sign=0;break;}
t=t+delta;
}
if(sign==-1)
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
return;
}
役に立つかもしれない!!!Bidと言う一つの価格を基準にしてみてください。OP_SELLSTOPの 始値はBid 、OP_BUYSTOPの始値はBid+87*Point (または必要な数)になります。
これで1人のマジシャン、パラメータを設定すると
よろしくお願いします。多分、誰かがコードに関数を実装する方法を知っていて、それはどんな値(例えばOrderCloseTime())であっても、履歴からの最後から2番目の値を比較し(私たちはクローズドポジションについて話して います)、もしそれらが異なるなら(この場合、最後から2番目の値は最後より小さい) - BLA-BLA-BLAを作る。可能であれば、私のコードを改良するか、間違った方向に持っていったのであれば自分で書いてください。
double C_T_L_C_P() {
datetime t;
double r=0;
int i, k=OrdersHistoryTotal(), q=0;
if (q==0)
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (t<OrderCloseTime()) {r=OrderCloseTime();}
}}}
return (r);}
ありがとうございました。
チェックに役立つ。
最初のユニットがサイクルに現れた後、このユニットがt+t1時間保持するかどうかをチェックする(デルタ秒ごとにチェックする)。それが維持されれば買い、ある時点で維持されなくなればループから抜ける。つまり、デルタ間隔ごとにチェックし、常に1であれば、その信号は有効である。
私の考えは正しいのでしょうか?
チェックに役立つ。
最初のユニットがサイクルに現れた後、このユニットがt+t1時間保持するかどうかをチェックする(デルタ秒ごとにチェックする)。それが維持されれば買い、ある時点で維持されなくなればループから抜ける。
私の考えは正しいのでしょうか?
その結果、無限whileループ(tは常に<t+t1、t1=0の場合のみ)が発生します。ループ内では常にsign1 =1
その結果、無限whileループ(tは常に<t+t1、t1=0の場合のみ)が発生します。ループ内では常にsign1 =1
エラーを修正する方法は?
エラーを修正するには?
エラーを修正するためには、アルゴリズム(コードではなく、アルゴリズム)を詳しく説明する必要があります。そして、アルゴリズムにコードを重ねる
エラーを修正するためには、アルゴリズムを詳細に説明する必要があります
2値信号の0または1を受信します。1を受信したら、この瞬間から10分(600秒)保持できるかどうかを60秒ごとにチェックする。10分間にすべて1があればBuy、一度でも1がなければチェックを終了し、オープンのシグナルがないと判断する。
2値信号の0または1を受信します。1を受信したら、この瞬間から10分間(600秒)保持できるかどうかを60秒ごとにチェックし始める。10分足がすべて1であれば買い、少なくとも1でなければチェックを終了し、オープンのシグナルがないと判断する。
離散信号sign0がどのように変化するかは、コード上では明らかではありません。提示されたコードでは、信号は変化しない。変更されたTと連携する試みは失敗している。