//---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i,n;
int i, k=OrdersTotal(),ti;
for (i=0; i<k; i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderType()== OP_SELLSTOP){
ti = OrderMagicNumber(); }
if(OrderType()== OP_BUY)
if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?
int i, k=OrdersTotal(), ti, tid;
for (i=0; i<k; i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()== OP_SELLSTOP) {
tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
ti = OrderMagicNumber();
// ищем ордер по тикету
if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
// проверяем Закрылся ли этот ордер - это твоя Байка
if (OrderCloseTime() > 0) {
// удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
OrderDelete(tid);
}
}
}
}
}
もしもの時のためにアドバイスをお願いします。
テスターでは問題なく、すべて計画通りに動作していますが、realskではトランザクションを開くことができません。
追伸:本当に困っています、生きるか死ぬかの問題です。
は、MODE_TRADESに置き換わりました。私は専門家ではないので、もしかしたら問題があるかもしれません。
私の数学はどうなっているんだ?
私のcurrentPrice >= profitLineは、if profitLine == or >という意味ですよね?
でも、少なくとも1点差で>なら、私には有効です。
FAQは ご覧になりましたか?
ええ、まあ...は思いつかなかった。ありがとうございます(苦笑)。
専門家の皆様、インジケータに関する質問が削除されました、解決策は全く予期せず、計算を重複して行い、おっと・・・となりました。すべてがうまくいっている。
しかし、もうひとつ、どのように機能したのか、理解したいものがあります。そのコードを添付します。
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;
double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);
SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;
//----
i=Bars-counted_bars-1;
while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);
//----
i--;
}
return(0);
}
撤退した。くだらないものを作りまくった。もっと単純なことがわかった。Start関数からStark変数を取り出して、tick毎に リセットされないようにしました。
sig1 "シグナルが出さ れると 買い注文が発動し、買い注文の下に売り注文 が発注されます。
買いポジションが決済さ れると、売りストップも削除されます。
しかし、このBUYがクローズされずに、次のBUYなどがオープンされた場合はどうなるのでしょうか?
最初に設定されたこのSELLSTOPは、最初のBUYがクローズされた後にクローズするために、何らかの方法で把握する必要があります。
また、保留中のものを突破した後、損切りせずに終了した場合は、保留中のものが前と同じ場所に設定されたことになります。
-----------------------------------
というのは、その売りが閉じられた後 、別のマスターを持つ新しい売りが開か れ、それが削除 されるからです。
購入終了後、どうしたらいいかわからない。
sig1 "シグナルが出さ れると 買い注文が発動し、買い注文の下に売り注文 が発注されます。
買いポジションが決済されると、売りストップも削除されます。
しかし、このBUYがクローズされずに、次のBUYなどがオープンされた場合はどうなるのでしょうか?
最初に設定されたこのSELLSTOPは、最初のBUYがクローズされた後にクローズするために、何らかの方法で把握する必要があります。
また、保留中のものを突破した後、損切りせずに終了した場合は、保留中のものが前と同じ場所に設定されたことになります。
-----------------------------------
というのは、その売りが閉じられた後 、別のマスターを持つ新しい売りが開か れ、それが削除 されるからです。
を購入した後、どのようにしたらいいのかわからない。
さて...同じSelectを使ってチェックするのですが...
いろいろなアイデアが浮かんできますね...。頑張ってください。時間を無駄にしないでください...あなたのマーチンゲールはそんなに簡単には動かない。