سؤال

هنا هو رمز:

require("quantmod")

getSymbols("SPY")  

ticker <- SPY[,4]

win <- 0 

for(i in 11:NROW(ticker))

j <- i-10

if(ticker[i] > ticker[j])               

win <- win + 1

أود التحقق مما إذا كان إغلاق اليوم أكبر من الإغلاق قبل 10 أيام ، وإذا كان لزيادة متغير الفوز.لقد جربت أيضا ما يلي:

for(i in 11:NROW(ticker))

if(ticker[i] > ticker[i-10])               

win <- win + 1             

يبدو أن كلاهما يجب أن يعملا لذلك لدي مشكلتان بالفعل.أولا الحصول عليها للعمل ، ولكن أيضا فهم الأهم لماذا لا تعمل.كلا العلم"الوسيطة بطول صفر".حدسي هو أنه شريط [ي] أو شريط [أنا-10] هذا هو الجاني.في الغالب لأنني عندما أستبدلها بقيمة مشفرة تعمل.

هل كانت مفيدة؟

المحلول

تكمن المشكلة في أن المؤشر [i] لا يعرض كائنًا رقميًا لذا لا يمكنك المقارنة أو الطرح منه.جرب هذا من أجل المتعة: Genacodicetagpre

لذا ، قم فقط بلفها بتنسيق رقمي وستحصل على ما تحتاجه. Genacodicetagpre

نصائح أخرى

هذا لا علاقة له بالحلقات.ذلك لأن شتس / حديقة الحيوان يتم محاذاة من قبل فهرسها قبل تنفيذ أي عمليات. ticker[i] > ticker[j] فارغ لأن الفهارس مختلفة.

لا تحتاج حقا إلى حلقة أيضا.يمكنك القيام بذلك بسهولة عن طريق تأخير السلسلة:

merged.ticker <- merge(ticker, lag(ticker,10))
win <- sum(merged.ticker[,1] > merged.ticker[,2], na.rm=TRUE)
lose <- sum(merged.ticker[,1] < merged.ticker[,2], na.rm=TRUE)

الأقواس المجعدة هي صديقك يا صديقي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top